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

joe*_*joe 1 perl reference

$HoA{teletubbies} = [ "tinky winky", "dipsy", "laa-laa", "po" ];
Run Code Online (Sandbox Code Playgroud)

如何在arrayref(s)的哈希中找到元素的数量?它应该返回4.

P S*_*ved 12

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

scalar @{$HoA{teletubbies}}
Run Code Online (Sandbox Code Playgroud)


Tom*_*rys 6

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

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

my $size = scalar @{$HoA{teletubbies}};
Run Code Online (Sandbox Code Playgroud)

但您也可以在此实例中隐式执行此操作:

my $size = @{$HoA{teletubbies}};
Run Code Online (Sandbox Code Playgroud)

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

my $size = $#{$HoA{teletubbies}} + 1;
Run Code Online (Sandbox Code Playgroud)

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