这在Perl中意味着什么?
if (@array)
if (!@array)
这是否意味着我们要求Perl检查数组是否存在?
由于
答案 0 :(得分:11)
标量上下文中的数组返回元素数。因此if(@array)
检查数组是否包含任何元素。它类似于if(scalar(@array)!=0)
。
答案 1 :(得分:9)
在Perl中,标量上下文中的数组计算数组中元素的数量。所以
my @array = ('a', 'b');
my $n = @array;
将$n
设为2。
此外,if
将标量上下文应用于其参数。所以
my @array = ('a', 'b');
if (@array) { ...
与
相同if (2) { ...
并且,因为2被视为 true ,if
的正文将被执行。
最后,Perl认为 false 的唯一数字是零,所以如果你传递一个空数组
my @array = ();
if (@array) { ...
与
相同if (0) { ...
并且if
的正文将不会执行。
无法发现Perl中是否存在变量。只要您总是的use strict
,Perl就不会让您运行引用不存在的变量的程序。
答案 2 :(得分:4)
if(@array)
至少有一个元素, @array
将为真。
my @array;
if (!@array) { print "empty array\n"; }
push @array, 11;
if (@array) { print "array has at least one element\n"; }