我正在一個Perl Dancer2 web應用和跨過我有一個包含含有一個陣列的陣列在位置2我傳遞給數組的引用到子,然後迭代這個數組的數組的情況絆倒(即包含數組)。如何取消引用數組數組?
當我試圖得到一個foreach()
循環與@$$_[2]
內最裏面的陣列,我得到一個錯誤:
Not a SCALAR reference
我可以很容易地解決這個具有:
my $ref = $$_[2];
print "@$ref\n";
,但我不知道爲什麼第一種方法不起作用。
看一看我的小例子:
my @x = (["a", "b", [1, 2], "c"],
["x", "y", [8, 9], "z"]);
my $y = \@x;
foreach (@$y) {
# print "@$$_[2]\n"; #produces error
my $z = $$_[2];
print "@$z\n"; #works
}
任何想法是怎麼回事?
[Perl中,引用取消引用數組(http://stackoverflow.com/questions/2969567/perl-dereference-array-of-references) –
的可能重複你有一個答案。但是我很想知道你在哪裏找到了可怕的引用語法。大多數地方只是在提供可讀性更強(而且更容易混淆)的'$ _-> [2]'語法時才提及它。 –
@DaveCross我認爲這是我第一次看到perldoc關於引用的語法:[link](http://perldoc.perl.org/perlref.html#Using-References),我發現它很直觀......個人而言,我並沒有發現'$$ _ [2]'或多或少會比'$ _-> [2]'混淆,而是習慣問題 – mable