2013-03-11 54 views

回答

8

这意味着解引用阵列参考

您将看到引用数组的内容。

需要注意的是,你可以在你的情况下,使用简单

@$x 

当你在你的数据结构多层次就像这个例子所需要的{ }字符:

@{ $foo->{first_level}->{second_level} } 

@{ $foo->[$first_level]->[$second_level] } 

这工作也与他人sigils

%{ } # HASH 
$ # SCALAR 

perldoc perlreftut

8

这是一个解除引用。 @{ $ref }是参考@array是阵列,这意味着你会使用@{ $ref }无论你使用@array

>perl -E"@array = qw(a b c); say $_ for @array;" 
a 
b 
c 

>perl -E"$ref = [qw(a b c)]; say $_ for @{ $ref };" 
a 
b 
c 

明确时可以省略卷毛。

>perl -E"$ref = [qw(a b c)]; say $_ for @$ref;" 
a 
b 
c 
+1

for perlreftut!学习创建和使用参考文献的最佳文档! – 2013-03-11 18:59:13

4

如果$x是一个数组的引用,如

@a = (1,2,3); 
$x = \@a 
@$x

然后或@{$x},你回来@a

1

取决于上下文和接下来的内容。在标量上下文:

$y = @{$x}; 

它将到$x是一个参考阵列中的返回元件的计数。

在列表上下文:

@y = @{$x}; 

它会返回的数组的元素。

如果随后[LIST]

@{$x}[1,42] 

它产生一个阵列片,该阵列在指定的元素列表,其$x是一个参考。

如果随后{LIST}

@{$x}{ 'foo', 'bar' } 

它产生一个散列切片,在散列指定键的值的列表,其$x是一个参考。

References quick reference

注意,{}周围$x没有关系用于构建一个匿名哈希{},他们是一个代码块的分隔符。如果它们是一个简单的标量变量,它们可以忽略;如果它们没有被省略,它们可以包含一个任意表达式,甚至包含多个在最后返回一个引用的语句。