获取此数组的元素数?

Gro*_*rMD 1 perl

我有这个数组,对于我的生活,我无法找到如何返回元素数.

我查看了perl网站,但似乎无法找到答案.如何返回以下元素计数?

my $animals = [ "dog", "cat", "canary", "mouse", ];

foreach my $i (0..$animals){ #this does not work
print $animals->[$i]
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*yle 5

您正在创建一个数组引用

my $animals = [];
Run Code Online (Sandbox Code Playgroud)

因此,如果您想对其执行数组操作,则需要取消引用它.您可以使用两种格式中的任何一种来尊重它

my $count = @$animals;
Run Code Online (Sandbox Code Playgroud)

要么

my $count = @{$animals};
Run Code Online (Sandbox Code Playgroud)

例如

perl -e '
 my $animals = [ "dog", "cat", "canary", "mouse", ]; 
 print $animals->[$_], "\n" foreach (0 .. $#$animals);
'
Run Code Online (Sandbox Code Playgroud)

OUTPUT

dog
cat
canary
mouse
Run Code Online (Sandbox Code Playgroud)

但是,这会让您计算元素的数量,然后使用数组的索引位置进行迭代.你可以通过说,在perl中做得更简单

foreach my $animal (@$animals){
    print $animal, "\n";
}
Run Code Online (Sandbox Code Playgroud)

使用上面的示例perl将遍历数组,将每个元素加载到$animal您可以打印的变量中.