首页 > 解决方案 > 为什么 Perl 在布尔上下文中将具有单个 undef 值的数组评估为真?

问题描述

为什么这段代码不打印“2”?

#!/usr/bin/perl

sub get_undef() {
        return undef;
}

my $test1 = get_undef;
my @test2 = get_undef;

print "1\n" unless ($test1);
print "2\n" unless (@test2);

标签: arraysperlif-statementundefined

解决方案


您的@test2数组包含一个值 ( undef)。

条件将数组置于标量上下文中,这导致数组的大小 (1)。

如果您想$test未定义并且@test2为空,则可以return;从您的子目录中。


推荐阅读