Perl警告时退出

Perl警告时退出,perl,scripting,warnings,Perl,Scripting,Warnings,我想要一个perl脚本在出现任何警告时立即退出,并带有错误代码。 例如,关于“参数…不是数字加法”的警告 怎么能这样呢? 提前谢谢。布拉格语有致命的选择: use warnings FATAL => 'all'; toolic对使用警告致命=>'all'的回答是正确的,但有一些警告。内部perl函数发出了一些警告,但这些警告确实不会消失。有一个列表列出了那些不安全的警告 从strictures的2.000003版开始,它启用以下警告: use warnings FATAL => '

我想要一个perl脚本在出现任何警告时立即退出,并带有错误代码。 例如,关于“参数…不是数字加法”的警告

怎么能这样呢? 提前谢谢。

布拉格语有致命的选择:

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:这是一个偏执的脚本,所以它适合这个用例。