Arrays \@array在Perl中是什么意思?

Arrays \@array在Perl中是什么意思?,arrays,perl,reference,Arrays,Perl,Reference,我有一些Perl代码,其中我注意到数组与前导反斜杠一起使用,如\@array 有人能解释一下它是什么意思吗?它意味着它是对数组的引用 这就很好地解释了符号将返回对所提供数组的引用(或指针),因此: $arrayref = \@array 将$arrayref作为对@array的引用-这类似于在C中使用*p指针表示法。数组引用主要用作子例程的参数。在没有引用的情况下,将数组@a(使用元素1、2、3)传递给sub与将1、2和3分别传递给sub几乎相同。使用\@array,sub可以看到整个数组,例

我有一些Perl代码,其中我注意到数组与前导反斜杠一起使用,如
\@array


有人能解释一下它是什么意思吗?

它意味着它是对数组的引用


这就很好地解释了符号将返回对所提供数组的引用(或指针),因此:

$arrayref = \@array

$arrayref
作为对
@array
的引用-这类似于在C中使用
*p
指针表示法。

数组引用主要用作子例程的参数。在没有引用的情况下,将数组
@a
(使用元素1、2、3)传递给sub与将1、2和3分别传递给sub几乎相同。使用
\@array
,sub可以看到整个数组,例如,显式确定其长度,操纵它以便调用方可以看到更改,这种能力的代价是,sub在访问数组元素时必须使用更复杂的语法:
$$a[0]
而不是
$a[0]

请不要混淆指针和引用
*(p+3)
在C语言中完全有效(只要
p
指向至少4个元素的有效存储)。你认为
\@array+3
是什么?首先,您似乎认为C中的指针和数组是相同的,然后,您将C指针与Perl引用混淆了。误导性。添加对数组的引用作为数组是很好的:
@{$arrayref}
子例程参数总是列表。如果执行
func(@ary)
,则
@ary
的内容将作为平面列表传递。在
func
中,您知道传递了多少个参数(因为参数在
@
中)。如果执行
func(\@ary)
,则
func
将收到一个由单个参数组成的列表。您可以使用标准箭头符号访问
func
的第一个参数所引用的匿名数组的第三个元素:
$\u0]->[2]
。当然,您通常会首先将该ref放入自己的变量中:
my($ary)=@;我的$is_frobly=$ary->[2]