我期待这能给出数组的长度。因为我认为$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 上的符号 $ 使用标量上下文。我的问题更多是关于印记,然后是实际长度。
我期待这能给出数组的长度。因为我认为$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 上的符号 $ 使用标量上下文。我的问题更多是关于印记,然后是实际长度。
为了得到正在@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仅其本身就是一个完全独立的变量(尽管您可能不应该创建这样的变量,因为它会令人困惑)。
您正在尝试打印一个$mo不存在的标量变量。您需要在标量上下文中使用数组名称:
my @mo = (3,4,5);
print scalar @mo;
另一种方法是使用$#mowhich 将返回数组中的最大索引,在您的情况下为 2。
你可能会得到一个数组的长度
我的 $mo = @mo;
打印 $mo;
我的 $mo = 标量 (@mo);
打印 $mo;
我的 $mo = $#mo + 1;
打印 $mo;