下面的 Perl 程序在执行过程中不输出任何错误。有没有办法在执行时引发异常以尝试打印到未声明的句柄?对于下面的情况,未声明的句柄将是STD_ERRand DOES_NOT_EXIST。
use strict;
print STD_ERR "(UNDECLARED) DOES NOT PRINT\n";
print STDERR " (EXIST) DOES PRINT\n";
print DOES_NOT_EXIST "(UNDECLARED) DOES NOT PRINT\n";
Run Code Online (Sandbox Code Playgroud)
虽然上面的代码是为了说明问题而简化的,但我有点浪费了几十分钟试图找出我的实际程序中的问题。在我的实际程序中,我意识到我拼错了要打印的句柄。我想避免这种浪费时间,但use strict;就是不这样做。
您可以使用use warnings 'unopened'警告未打开的文件句柄的使用。要使警告致命(即抛出异常),您可以使用:
use warnings FATAL => 'unopened';
Run Code Online (Sandbox Code Playgroud)