我期待这给出数组的长度。因为我认为 $mo
隐含了标量上下文。
但相反,我收到错误:Global symbol "$mo" requires explicit package name at ./a.pl line 7.
#! /usr/bin/perl
use strict;
use warnings;
my @mo = (3,4,5);
print( $mo);
更新::
我认为 mo 是变量, $mo 上的 sigil $ 使用标量上下文。我的问题更多是关于印记然后实际得到长度。
最佳答案
为了获得 @mo
中的元素数量,请使用 scalar @mo
。
my $num_elements = scalar @mo;
当上下文规定它必须是标量时,您可以省略
scalar
,例如在比较中:if ($count < @mo) { print "$count is less than the number of elements" }
您也可以使用
$#mo
,它是最后一个元素的索引(通常比元素数少一个)。my $last_index = $#mo;
当您遍历数组并需要数组索引时,这很有用:
for (0..$#mo)
{
print "Index $_ is $mo[$_]\n";
}
$mo
形式用于获取数组元素时:my $second_element = $mo[1];
$mo
本身就是一个完全独立的变量(尽管您可能不应该创建这样的变量,因为它会引起混淆)。关于perl 101,通过在数组变量上使用 $ 获取数组长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15130695/