Perl警告时退出
我想要一个perl脚本在出现任何警告时立即退出,并带有错误代码。 例如,关于“参数…不是数字加法”的警告 怎么能这样呢? 提前谢谢。布拉格语有致命的选择:Perl警告时退出,perl,scripting,warnings,Perl,Scripting,Warnings,我想要一个perl脚本在出现任何警告时立即退出,并带有错误代码。 例如,关于“参数…不是数字加法”的警告 怎么能这样呢? 提前谢谢。布拉格语有致命的选择: use warnings FATAL => 'all'; toolic对使用警告致命=>'all'的回答是正确的,但有一些警告。内部perl函数发出了一些警告,但这些警告确实不会消失。有一个列表列出了那些不安全的警告 从strictures的2.000003版开始,它启用以下警告: use warnings FATAL => '
use warnings FATAL => 'all';
toolic对
使用警告致命=>'all'的回答代码>是正确的,但有一些警告。内部perl函数发出了一些警告,但这些警告确实不会消失。有一个列表列出了那些不安全的警告
从strictures
的2.000003版开始,它启用以下警告:
use warnings FATAL => 'all';
use warnings NONFATAL => qw(
exec
recursion
internal
malloc
newline
experimental
deprecated
portable
);
no warnings 'once';
有关完整的理由,请参见
当然,您不必将上述行复制/粘贴到代码中,而只需
use strictures 2;
这也为您启用了strict
。
(您可能必须首先安装Structures
。尚未提及,但您可以设置\uuuuuuu警告\uuuuu
处理程序并在那里执行您喜欢的操作
$SIG{__WARN__} = sub {
die "This program does not tolerate warnings like: @_";
};
您可能会看到如下警告:perl-w-mstrict-e'$SIG{{uuuu WARN}=sub{die”死亡是因为:“,@};打印“foo”+2
这会打印死亡,因为:参数“foo”在-e行1处不是数字加法(+)。
到stderr和exits注意,在未来的Perl版本中可能会引入新的警告。避免在需要防未来的代码中使用FATAL=>'all'
。谢谢,这绝对做到了@duskwuff:这是一个偏执的脚本,所以它适合这个用例。