在 Perl 中捕获未声明的文件句柄使用
Catching undeclared use of a filehandle in Perl
下面的Perl程序在执行过程中没有输出任何错误。有没有办法在执行尝试打印到未声明的句柄时引发异常?对于下面的情况,未声明的句柄将是 STD_ERR
和 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";
虽然上面的代码为了说明问题进行了简化,
我浪费了几十分钟试图找出我的真实程序中的问题。在我的真实程序中,我意识到我拼错了要打印的句柄。我想避免这种浪费时间的情况,但是use strict;
根本就没有这样做。
您可以使用 use warnings 'unopened'
警告未打开的文件句柄的使用。要使警告致命(即抛出异常),您可以使用:
use warnings FATAL => 'unopened';
另见 perldoc warnings and perldiag
下面的Perl程序在执行过程中没有输出任何错误。有没有办法在执行尝试打印到未声明的句柄时引发异常?对于下面的情况,未声明的句柄将是 STD_ERR
和 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";
虽然上面的代码为了说明问题进行了简化,
我浪费了几十分钟试图找出我的真实程序中的问题。在我的真实程序中,我意识到我拼错了要打印的句柄。我想避免这种浪费时间的情况,但是use strict;
根本就没有这样做。
您可以使用 use warnings 'unopened'
警告未打开的文件句柄的使用。要使警告致命(即抛出异常),您可以使用:
use warnings FATAL => 'unopened';
另见 perldoc warnings and perldiag