使用未初始化的值时如何使Perl退出并显示错误代码?

时间:2018-11-22 03:39:24

标签: perl

我看不到如何使用未初始化的值使perl失败。有没有办法使它成为默认行为?谢谢。

https://perlmaven.com/use-of-uninitialized-value

2 个答案:

答案 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";