Perl引用取消引用@ var1 = [($ a,$ b)]

时间:2017-02-27 12:49:19

标签: arrays perl reference dereference

我在perl中有以下表达

@var1 = [($a, $b)]

任何人都可以帮我推断存储在var1中的值。

2 个答案:

答案 0 :(得分:4)

@var1是一个包含单个元素的数组。该单个元素($var[0])包含对另一个数组的引用。引用的数组有两个元素,包含变量$a$b的值。

所以$var[0]包含一个数组引用。要从数组引用获取引用数组的元素,我们使用查找箭头->

print $var[0]->[0]; # The first element in the referenced array
print $var[0]->[1]; # The second element in the referenced array

我们可以在这里使用一个额外的语法准确性。当我们有两组仅由查找箭头分隔的查找括号时,我们可以省略该箭头。表达式就变成了。

print $var[0][0];
print $var[0][1];

关于代码的两点:

  • $a$b是用于排序子例程的特殊变量。在其他任何地方使用它们都是一个坏主意。
  • 在原始作业表达式(@var1 = [($a, $b)])中,不需要括号。只需@var1 = [$a, $b]也会做同样的事情。

答案 1 :(得分:1)

@ var1是一个数组的数组。所以它唯一的内容是另一个包含两个值的数组,$ a和$ b。

$a2 = $var1[0][0];
$b2 = $var1[0][1];