我正在尝试在打开文件时出现错误时关闭命令提示符。我已经尝试过'die'命令,但是在显示消息后立即关闭命令提示符。我希望能够打印错误消息,等待几秒钟,然后关闭或退出。现在,我可以在关闭提示之前让代码等待,但它从不显示我的错误消息:
open (LOG1, $file1) || (print "\n# Error in opening $file1, make sure it exists! #\n", sleep(3), exit);
答案 0 :(得分:6)
您误用了逗号运算符 - print不会打印错误消息,而是返回exit()
的返回值!请改用分号。
答案 1 :(得分:3)
我认为您正在使用Windows系统进行开发。如果是这样,您可以尝试在脚本中添加以下代码,这些代码将在脚本退出之前显示:“按任意键继续...”。
END { system 'pause' }
答案 2 :(得分:2)
我怀疑sleep
没有刷新输出缓冲区,所以这可以解释为什么你没有看到任何打印出来的东西;你可以尝试:
open (LOG1, $file1) || ((print "\n# Error in opening $file1, make sure it exists! #\n"), $|++, sleep(3), exit);
在任何情况下,在我看来,最好定义这样的dieAfterDelay
函数:
sub dieAfterDelay {
my $msg = shift;
my $delay = shift;
my $errNo = shift;
print $msg . "\n", $|++;
sleep($delay);
exit($errNo);
}
您可以这样使用:
open (LOG1, $file1) || dieAfterDelay("\n# Error in opening $file1, make sure it exists! #\n", 3, -1);