2010-05-20 102 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 .. $#{$数据{主机}}#返回数组

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