我看不到如何使用未初始化的值使perl失败。有没有办法使它成为默认行为?谢谢。
答案 0 :(得分:2)
可能是这样的:
#!/usr/bin/perl
use strict;
use warnings;
use warnings FATAL => qw[uninitialized];
use feature 'say';
my $foo;
say "Foo is $foo";
say "Don't get here";
注释FATAL
行以查看标准行为。
答案 1 :(得分:0)
戴夫的回答肯定是所描述用例的最佳选择。
这是另一种解决方案,它演示了警告信号处理程序的使用(请参阅http://perldoc.perl.org/functions/warn.html)。
使用信号处理程序的好处是灵活性:您可以捕获任何类型的警告,对其进行分析,然后执行所需的任何行为。在给定的用例中,这是一个过大的杀伤力,但在更复杂的情况下可能很有用。
use strict;
use warnings;
use feature "say";
local $SIG{__WARN__} = sub {
if ($_[0] =~ /^Use of uninitialized value/) {
die $_[0];
} else {
warn $_[0] ;
}
};
my $foo;
say "Foo is $foo";
say "Dont get here";