与引用相关的Perl语法
假设x是一个数组引用 我知道,与引用相关的Perl语法,perl,Perl,假设x是一个数组引用 我知道,[]提供了一个匿名数组引用,{}提供了一个匿名哈希引用。现在@{$x}是什么意思?这意味着取消对数组引用的引用 您将看到被引用数组的内容 注意,您可以使用简单的 @$x 就你而言 当数据结构中有多个级别时,如本例所示,需要使用{}字符: @{ $foo->{first_level}->{second_level} } 或 这也适用于其他人: 请参见这是一个解引用{$ref}是指引用,就像@array是指数组一样,这意味着无论您在哪里使用@array,
[]
提供了一个匿名数组引用,{}
提供了一个匿名哈希引用。现在@{$x}
是什么意思?这意味着取消对数组引用的引用
您将看到被引用数组的内容
注意,您可以使用简单的
@$x
就你而言
当数据结构中有多个级别时,如本例所示,需要使用{}
字符:
@{ $foo->{first_level}->{second_level} }
或
这也适用于其他人:
请参见这是一个解引用
{$ref}
是指引用,就像@array
是指数组一样,这意味着无论您在哪里使用@array
,都会使用{$ref}
>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
$x
是对数组的引用,如
@a = (1,2,3);
$x = \@a
然后使用
@$x
或@{$x}
,您将返回@a
取决于上下文和后面的内容。在标量上下文中:
$y = @{$x};
它将返回数组中$x
作为引用的元素计数
在列表上下文中:
@y = @{$x};
它将返回数组的元素
如果后跟[列表]
:
@{$x}[1,42]
它生成一个数组切片,数组中指定元素的列表,$x
是该数组的引用
如果后跟{LIST}
:
@{$x}{ 'foo', 'bar' }
它生成一个哈希片,哈希中指定键的值列表,$x
是该哈希的引用
请注意,
{}
周围的{}
与用于构造匿名哈希的{}
没有关系,它们是代码块的分隔符。如果它们是一个简单的标量变量,则可以省略它们;如果不省略它们,它们可以包含任意表达式,甚至多个语句,最后返回引用。+1表示perlreftut!学习创建和使用参考文献的最佳文档!
@{$x}[1,42]
@{$x}{ 'foo', 'bar' }