在以下perl片段中:
my $a1 = [ qw(rock pop musical) ]; my $b1 = [ qw( mystery action drama )]; my $c1 = [ qw( biography novel periodical)]; my @a2d = ( $a1,$b1,$c1 );
@ a2d是一个包含对数组的引用的数组.
我的问题是为什么以下打印相同的东西(音乐剧)?:
print ${$a2d[0]}[2],"\n"; print $a2d[0][2],"\n";
解决方法
$a2d [0]是一个数组引用.我们可以使用这个数组引用并打印出第三个条目:
my $ref = $a2d[0]; say ${ $ref }[2]; say $ref->[2];
这些形式是等同的.现在,我们可以取消该中间变量,并得到:
say ${ $a2d[0] }[2]; say $a2d[0]->[2];
如果解除引用运算符 – >在两个下标之间发生,然后它可以作为快捷方式省略:
say $a2d[0][2];
当左下标为[…]或{…}且右下标为[…],{…}或(…)时,可省略箭头.
这也在perlreftut中进行了解释,更深入地考虑了这些考虑因素.阅读该文件应该清除许多问题.