我期待这给出数组的长度.因为我认为$mo隐含了标量上下文.
但相反,我得到错误:
全局符号“$mo”需要在./a.pl第7行显式包名.
#! /usr/bin/perl use strict; use warnings; my @mo = (3,4,5); print( $mo);
更新::
我认为mo是变量,$mo上的sigil $使用标量上下文.我的问题更多的是关于sigil然后实际得到长度.
解决方法
为了获得@mo中元素的数量,请使用标量@mo.
my $num_elements = scalar @mo;
当上下文指示它必须是标量时,您可以省略标量,例如在比较中:
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本身就是一个完全独立的变量(虽然你可能不应该创建这样一个变量,因为它会让人感到困惑).