如何在arrayref的哈希中找到元素的数量?

时间:2009-10-27 15:54:18

标签: perl reference

$HoA{teletubbies} = [ "tinky winky", "dipsy", "laa-laa", "po" ];

如何找到此arrayref(s)散列中的元素数量?它应该返回4.

3 个答案:

答案 0 :(得分:12)

从技术上讲,这不是数组的哈希。这是数组引用的哈希值。因此,您应该使用@{...}运算符取消引用它,并(可选)强制标量上下文将数组转换为其长度。

scalar @{$HoA{teletubbies}}

答案 1 :(得分:6)

您可以通过在标量上下文中对数组进行评估来获取Perl中数组的大小。

例如,你可以明确地这样做:

my $size = scalar @{$HoA{teletubbies}};

但是你也可以在这个例子中隐式地这样做:

my $size = @{$HoA{teletubbies}};

这就是Perl,你也可以这样做:

my $size = $#{$HoA{teletubbies}} + 1;

#运算符返回数组的最后一个索引,因此向它添加一个将给出它的大小。

答案 2 :(得分:0)

如果你想做整个哈希,那么只需添加一点:

my $size= 0 ;
foreach ( values %HoA ) { $size += @$_ }