$HoA{teletubbies} = [ "tinky winky", "dipsy", "laa-laa", "po" ];
我怎樣才能找到arrayref(s)散列元素的數量?它應該返回4.如何查找arrayref散列中元素的數量?
$HoA{teletubbies} = [ "tinky winky", "dipsy", "laa-laa", "po" ];
我怎樣才能找到arrayref(s)散列元素的數量?它應該返回4.如何查找arrayref散列中元素的數量?
從技術上講,這不是數組散列。這是數組引用的散列。因此,您應該使用@{...}
運算符將其取消引用,並(可選)強制標量上下文將數組轉換爲其長度。
scalar @{$HoA{teletubbies}}
您可以通過在標量上下文中評估它來獲取Perl中數組的大小。
例如,你可以做到這一點明確,如:
my $size = scalar @{$HoA{teletubbies}};
但你也可以做到這一點隱含在這種情況下:
my $size = @{$HoA{teletubbies}};
這是Perl中,你也可以做這樣的:
my $size = $#{$HoA{teletubbies}} + 1;
(#
運算符返回數組的最後一個索引,所以添加一個t它會給你它的大小)。
最後一個是額外的工作,一目瞭然難以閱讀。在某些情況下,沒有真正的理由去尋找「更多的方式」來做到這一點。 – Telemachus 2009-10-27 18:04:19
最後一個也在5.10中棄用。 – sebthebert 2009-10-27 20:47:44
'$#'告訴你什麼取決於'$ ['。的值。 – 2009-10-27 21:13:39
如果你想要做整個哈希,然後只需添加更多一點吧:
my $size= 0 ;
foreach (values %HoA) { $size += @$_ }
的必須提到http://perlmonks.org/?node=References+quick+reference – ysth 2009-10-28 01:17:12
perldsc和perllol使用「數組散列」,「數組陣列」等命名法。任何寫'%HoA'的人都可能讀過perldsc。我自己不喜歡它,但是......它太大了無法戰鬥;) – hobbs 2009-10-28 10:56:23