Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 这个具体值是多少?Perl_Arrays_Perl - Fatal编程技术网

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 ) };