$HoA{teletubbies} = [ "tinky winky", "dipsy", "laa-laa", "po" ];
如何找到此arrayref(s)散列中的元素数量?它应该返回4.
答案 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 += @$_ }