2010-02-11 49 views
4

如果我這樣做,它工作正常:如何在Perl中使用引用複製數組?

print $ref->{element}->[0]->{data}; 

我想看看有多少引用數組中,這樣我可以通過他們循環,但我有一個很難做到這一點。

這裏是我試過的代碼,但它不工作:

my @array = @$ref->{element}; 

foreach(@array) { 
    print $_->{data}; 
} 

我得到一個「不是一個數組引用」錯誤

+1

您可能會發現** perldoc perldsc ** http://perldoc.perl.org/perldsc.html有用。另外,Perlmonks中的**參考快速參考**也很方便:http://www.perlmonks.org/?node_id=69927 – daotoad 2010-02-11 23:58:44

回答

8

列表的哈希值是非常棘手的。 @$ref->{element}被解析爲(@$ref)->{element},解引用$ref而不是$ref->{element}

嘗試

my @array = @{$ref->{element}} 

my $size = scalar @{$ref->{element}} 

血淋淋的細節中perllol

+0

謝謝,效果很好! – Jeremey 2010-02-11 21:44:47

+0

從技術上講,你不需要使用'scalar'來獲得長度,但是我可能會把它放進去。 – 2010-02-12 15:44:21

-2

由於在調試一般的援助,給Data::Dumper一個看。這對於在數據結構的內部戳動物是非常寶貴的。

+0

我正在使用它,但只是告訴我在那裏有一個數組(這是我如何知道這一點)。因爲我可以訪問該數組並進一步打印值,所以我知道這不是問題。我需要的是能夠遍歷該數組。 – Jeremey 2010-02-11 21:36:20