7

perl 关于参考的问题。

$ref = [11, 22, 33, 44];
print "$$ref[0]" . "\n";
print "@$ref[0]" . "\n";

当我运行 perl -d。

DB<1> p @$ref
11223344
DB<2> p $ref
ARRAY(0x9dbf480)
DB<3> p \$$ref[0]
SCALAR(0x9dbf470)
DB<4> p \@$ref[0]
SCALAR(0x9dbf470) 

$$ref[0] 代表 ARRAY(0x9dbf480) 的第一个标量。

@$ref[0] 是什么意思?我无法理解。

4

2 回答 2

11

$ref = [11, 22, 33, 44];是对匿名数组的引用。

$$ref[0]or ${$ref}[0]or$ref->[0]正在取消引用数组并检索第一个元素。

@$ref[0]@{$ref}[0]取消引用数组并获取仅包含第一个元素的数组切片。

于 2012-06-17T02:46:51.010 回答
4

首先,@$ref[0]不同于\@$ref[0]. 您的调试会话中有前者,脚本中有后者。

无论如何,@$ref[0]意思是一样的@{$ref}[0]@ref如果你有一个名为,的数组@ref[0]将是等价的。它使用切片表示法来获取数组的第一个元素。

@array[$x]和之间的区别在于$array[$x],在第一个中,您可以指定多个索引并从数组中取回一组元素,而不仅仅是一个。但是如果你只在括号之间放一个索引,你会得到相同的结果。

于 2012-06-17T02:32:40.683 回答