Arrays 这个具体值是多少?Perl
我不完全确定这个数组存储的是什么。有人能给我解释一下发生了什么事吗?谢谢。这只是取消对数组引用。Arrays 这个具体值是多少?Perl,arrays,perl,Arrays,Perl,我不完全确定这个数组存储的是什么。有人能给我解释一下发生了什么事吗?谢谢。这只是取消对数组引用。$array\u ref包含对数组的引用,@array设置为引用数组的内容 my @array = @{$array_ref}; 你需要阅读 简而言之,@array与$array\u ref指向的数组相同。这是我能给出的最精确的答案,我不知道放入$array\u ref$array\u ref中的内容大概包含对数组的引用,它与数组本身不同。数组(名为@some_array)包含元素(除非为空)。数组
$array\u ref
包含对数组的引用,@array
设置为引用数组的内容
my @array = @{$array_ref};
你需要阅读
简而言之,
@array
与$array\u ref
指向的数组相同。这是我能给出的最精确的答案,我不知道放入$array\u ref
$array\u ref
中的内容大概包含对数组的引用,它与数组本身不同。数组(名为@some_array
)包含元素(除非为空)。数组ref(名为$some_arrayref
)是用于引用实际数组的标量值。实际数组可以是命名数组(如中所示,它有一个变量名),也可以是匿名数组(如中所示,没有命名变量,但仅通过引用引用)
要使用$array\u ref
引用的数组中的元素,必须取消对它的引用。一种语法是@$array\u ref
(读作“数组(@
),由名为array\u ref
)的标量($
)所指。我从来都不喜欢将一堆信号(@
,$
和%
符号)组合在一起当取消引用时。我觉得这会妨碍代码的可读性,特别是当引用变得更加复杂或嵌套时。Perl允许使用大括号,这有助于消除歧义并直观地澄清正在发生的事情。{$array\u ref}
可以被理解为作为数组的取消引用({…}
)$array\u ref
引用的数组
从Perl的POD中,看一看perlreftut。这是一个很好的起点。
$array\u ref
是对列表/数组的引用。
因此,为了在列表内容中取消对它的引用并获取所有内容,您可以使用
$ perl -E 'my $a = [1, 2, 3]; my @b = @{$a}; say $a; say @b'
ARRAY(0x100803ea0) # a reference to an array
123 # actual array
可以将其分配到不同的数组/列表中,如:
@{$array_ref}
代码生成$array_ref引用的数组的顶级副本,并将其存储在@array中 要制作深层拷贝,请使用可存储的dclone:
my @array = @{$array_ref};
有关详细信息,请参见perldoc Storable
Storable是一个使用Perl安装的标准模块。要查看所有标准参数和模块的列表,请参阅
perldoc perlmodlib
,很抱歉,这不是指向数组的指针;它是指向数组的序列化引用。引用不是指针。
use Storable;
@array = @{ dclone( $array_ref ) };