我期待这给出数组的长度。因为我认为 $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/

10-13 02:50