关于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]是什么意思?我不明白。
答案 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]
之间的区别在于,在第一个索引中,您可以指定多个索引并从数组中获取元素集合,而不是仅返回一个元素。但是如果你只在括号之间放一个索引,你会得到相同的结果。