my $arr = [[2,4],[1,3]];
print $$arr[0]->[1];
按预期打印1。
如果我删除了取消引用:
my $arr = [[2,4],[1,3]];
print $$arr[0][1];
它仍然有效,根本没有警告?为什么呢?
答案 0 :(得分:8)
在任何{}
和[]
之间始终假设取消引用。以下是相同的:
print $var[2]{key}[3][5];
和
print $var[2]->{key}->[3]->[5];
来自文档
在两个下标之间,箭头是可选的。
我们可以写
$a[1]->[2]
而不是$a[1][2]
;它意味着同样的事情。我们可以写$a[0]->[1] = 23
而不是$a[0][1] = 23
;它意味着同样的事情。现在看起来真的像二维数组!
你可以看到为什么箭头很重要。没有它们,我们将不得不写
${$a[1]}[2]
而不是$a[1][2]
。对于三维数组,他们让我们写$x[2][3][5]
而不是不可读的${${$x[2]}[3]}[5]
。
perlref #Using References
,第3部分:
箭头是括号下标
之间的可选