在Perl中,标量上下文中的数组计算数组中元素的数量.所以
my @array = ('a', 'b');
my $n = @array;
Run Code Online (Sandbox Code Playgroud)
设置$n为2.
此外,if将标量上下文应用于其参数.所以
my @array = ('a', 'b');
if (@array) { ...
Run Code Online (Sandbox Code Playgroud)
是相同的
if (2) { ...
Run Code Online (Sandbox Code Playgroud)
并且,因为2被认为是真的,所以遗体if 将被执行.
最后,Perl认为是false的唯一数字是零,所以如果你传递一个空数组
my @array = ();
if (@array) { ...
Run Code Online (Sandbox Code Playgroud)
它是一样的
if (0) { ...
Run Code Online (Sandbox Code Playgroud)
并且if 不会被执行的身体.
无法发现Perl中是否存在变量.只要你use strict,你永远应该,Perl不会让你运行一个引用不存在的变量的程序.
if(@array)如果@array至少有一个元素,则为真。
my @array;
if (!@array) { print "empty array\n"; }
push @array, 11;
if (@array) { print "array has at least one element\n"; }
Run Code Online (Sandbox Code Playgroud)