2010-05-20 140 views
6

內的數組的長度我有以下幾點:獲取一個Perl哈希

$data{host} -> [$i] -> {someotherstuff} 

我怎樣才能獲得數組,其中[$ i]爲的長度?

回答

14
$length = scalar(@{ $data{host} }); 
+1

他們說Perl的語法很複雜(說自從v2.x以來一直在使用Perl的人) – msw 2010-05-20 16:37:07

+0

我總是告訴人們Perl早於時間:-) – Cfreak 2010-05-20 16:37:57

+5

不需要'標量'。 '$ length = @ {$ data {host}}'也可以工作。 – Zaid 2010-05-20 16:45:32

1

答案補充是考慮msw's comment

use autobox::Core; 
# ... 
$data{host}->length; 

這個工程一樣Cfreak的答案,除了整塊少得多的語法,在使用一個模塊的成本。

我的論點是關於Perl的大多數合理投訴都可以簡單地用回答»它不需要這樣!«並且滿足於來自CPAN的簡短摘要。

0

如果你想在最後一個索引,你可以使用:$#@ {$ {數據主機}}

顯然,數組的長度是最後一個索引+ 1。使用這個符號時,它是很難實現標量上下文,或者當你特別想要長度爲1時。例如:

0 .. $#{$數據{主機}}#返回數組

有時有用的所有索引的列表。