Arrays 如何测试数组的空值?

Arrays 如何测试数组的空值?,arrays,perl,null,Arrays,Perl,Null,我无法理解以下片段: perl -e ' my @test = undef; if(@test) {print "Full\n";}' Full 似乎@test虽然被指定为undef,但它实际上有一个元素是undef。 那么,如果@test为null,那么正确的测试方法是什么呢? 做ifscalar@test == 1 && !$测试[0]对我来说似乎很奇怪要将@array初始化为nothing,只需执行以下操作: my @test = (); 目前你正在做: my @t

我无法理解以下片段:

perl  -e '  
my @test = undef;  
if(@test) {print "Full\n";}'  
Full  
似乎@test虽然被指定为undef,但它实际上有一个元素是undef。 那么,如果@test为null,那么正确的测试方法是什么呢? 做ifscalar@test == 1 && !$测试[0]对我来说似乎很奇怪

要将@array初始化为nothing,只需执行以下操作:

my @test = (); 
目前你正在做:

my @test = (undef);
正如您所观察到的,它为数组指定了一个值

要清除已声明的数组,可以像这样使用undef:

要将@array初始化为nothing,只需执行以下操作:

my @test = (); 
目前你正在做:

my @test = (undef);
正如您所观察到的,它为数组指定了一个值

要清除已声明的数组,可以像这样使用undef:


我想这就是我们初始化散列的方式。散列和数组都是用列表初始化的,是的。散列只是希望该列表包含键/值对。要清除现有数组或散列,最好为其分配一个空列表,例如@test=和%test=。使用undef@test还会将分配给数组的内存释放回Perl的池中,这通常是低效和不受欢迎的。散列只是希望该列表包含键/值对。要清除现有数组或散列,最好为其分配一个空列表,例如@test=和%test=。使用undef@test还会将分配给数组的内存释放回Perl的池中,这通常是低效且不受欢迎的。您可能需要在此处阅读我的解释:您可能需要在此处阅读我的解释: