在 Perl 中捕获未声明的文件句柄使用

mak*_*mak 2 perl handle

下面的 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;就是不这样做。

Håk*_*and 6

您可以使用use warnings 'unopened'警告未打开的文件句柄的使用。要使警告致命(即抛出异常),您可以使用:

use warnings FATAL => 'unopened';
Run Code Online (Sandbox Code Playgroud)

另见perldoc 警告perldiag