perl:如何理解@ $ ref [0]?

时间:2012-06-17 02:06:38

标签: perl reference

关于ref的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]是什么意思?我不明白。

2 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:4)

首先,@$ref[0]\@$ref[0]不同。您在调试会话中使用前者,在脚本中使用后者。

无论如何,@$ref[0]@{$ref}[0]的含义相同。如果您有一个名为@ref的数组,则@ref[0]将是等效的。它使用切片表示法来获取数组的第一个元素。

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