Arrays 如何取消对数组数组的引用?
我正在开发一个Perl Dancer2 Web应用程序,无意中发现了这样一种情况,即我有一个数组,其中包含一个位于位置2的数组。我将对该数组的引用传递给子数组,然后迭代该数组(包含数组) 当我尝试使用Arrays 如何取消对数组数组的引用?,arrays,perl,reference,Arrays,Perl,Reference,我正在开发一个Perl Dancer2 Web应用程序,无意中发现了这样一种情况,即我有一个数组,其中包含一个位于位置2的数组。我将对该数组的引用传递给子数组,然后迭代该数组(包含数组) 当我尝试使用@$\u2]获取foreach()循环中最内层的数组时,我得到一个错误: 不是标量引用 我可以通过以下方式轻松解决此问题: my $ref = $$_[2]; print "@$ref\n"; 但我想知道为什么第一种方法不起作用 请看我的最小示例: my @x = (["a", "b", [1,
@$\u2]
获取foreach()
循环中最内层的数组时,我得到一个错误:
不是标量引用
我可以通过以下方式轻松解决此问题:
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
}
你知道这是怎么回事吗?看看
->
操作符。问题可能在于括号。毕竟,当你说$$\u2]
时,你的意思是:${$\u}[2]
还是{$$\u}[2]
类似的内容可能更清晰(假设您想要1,2和8,9)
查看
->
操作符。问题可能在于括号。毕竟,当你说$$\u2]
时,你的意思是:${$\u}[2]
还是{$$\u}[2]
类似的内容可能更清晰(假设您想要1,2和8,9)
您需要大括号:
@{$$_[2]}
或者,更具可读性
@{ $_->[2] }
原始的@$$\u2]
被解释为
@{ $$_ }[2]
比照
您需要大括号:
@{$$_[2]}
或者,更具可读性
@{ $_->[2] }
原始的@$$\u2]
被解释为
@{ $$_ }[2]
比照
你可能有一个答案。但我很想知道你是从哪里学来这种可怕的引用语法的。大多数地方只是在向可读性更高(也不那么混乱)的
$\u->[2]
语法传递的过程中提到它。@DaveCross我想这是我在阅读perldoc中看到的第一个关于引用的语法:我觉得这有点直观。。。就我个人而言,我并不觉得$$\u2]
比$\u->[2]
更让人困惑,而是一个你有答案的可能重复的问题。但我很想知道你是从哪里学来这种可怕的引用语法的。大多数地方只是在向可读性更高(也不那么混乱)的$\u->[2]
语法传递的过程中提到它。@DaveCross我想这是我在阅读perldoc中看到的第一个关于引用的语法:我觉得这有点直观。。。就我个人而言,我并不觉得$$\u2]
比$\u->[2]
更让人困惑,而是哈比托克的问题,明白了!谢谢:)好的,明白了!谢谢:)