if(@array)在perl中的含义是什么?

时间:2013-10-14 20:55:14

标签: perl scripting

这在Perl中意味着什么?

  1. if (@array)
  2. if (!@array)
  3. 这是否意味着我们要求Perl检查数组是否存在?

    由于

3 个答案:

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