如何检查Perl中的值是否为undef?

How can I check if a value is undef in Perl?

提问人:David B 提问时间:9/22/2010 最后编辑:brian d foyDavid B 更新时间:9/22/2010 访问量:1139

问:

最好举个例子:

my $var1=1;
my $var2;
my $var3=3;

# say "at least one undef" if at least one of $var1, $var2, $var3 is undef

显然,我可以明确地循环并做到这一点,但我总是喜欢找到一个达到相同结果的衬里。

perl undefined-index

评论

0赞 brian d foy 9/22/2010
如何检查Perl标量变量是否已初始化的可能重复?

答:

10赞 Bob 9/22/2010 #1
if (grep { !defined } $var1, $var2, $var3) {
  say 'at least one undef'
}

一个衬垫

say 'at least one undef' if grep { !defined } $var1, $var2, $var3;

评论

0赞 Bob 9/22/2010
//是一个短路运算符,因此,如果您有一个代码路径,要根据单个值的定义有条件地执行,这将很有用。我想不出这里的用处,但 TMTOWTDI。
0赞 cjm 9/22/2010
@David B 是 defined-or,因此它只能用于计算“至少一个定义”。要获得“至少一个 undef”,您需要一个 defined-and 运算符,该运算符(当前)不存在。//
1赞 erickb 9/22/2010 #2

扩展 Bob 的答案,在某些情况下,您可能希望获取实际计数

say 'has ', scalar ( grep { not defined } $var1,$var2,$var3 ),' undef';