Perl 正确处理hashrefs数组

Perl 正确处理hashrefs数组,perl,Perl,我的代码中有一个地图列表 my @codeList; push (@codeList, \%map1, \%map2, \%map3); 当我试图通过循环列表索引来访问它时,它并没有给我正确的映射。 我错过了什么 my $Count = @codeList; for (my $index =0; $index < $Count; $index++) { my %map = $codeList[$index]; } my$Count=@codeL

我的代码中有一个地图列表

my @codeList;
push (@codeList, \%map1, \%map2, \%map3);
当我试图通过循环列表索引来访问它时,它并没有给我正确的映射。 我错过了什么

my $Count = @codeList;
for (my $index =0; $index < $Count; $index++)
{
    my %map = $codeList[$index];                
} 
my$Count=@codeList;
对于(我的$index=0;$index<$Count;$index++)
{
我的%map=$codeList[$index];
} 

您的代码工作正常。我想是你的循环(你没给我们看)。您可以通过取消对hashref(
%{$hashref}
)的引用来循环:

编辑输出:

test1 ab
test2 ab
test2 ab

您的代码运行良好。我想是你的循环(你没给我们看)。您可以通过取消对hashref(
%{$hashref}
)的引用来循环:

编辑输出:

test1 ab
test2 ab
test2 ab
而不是

my %map = $dbColsList[$dbCount]; 
您必须使用引用,因为
@codeList
中填充了它们=>
\%map1

my $map = $dbColsList[$dbCount]; 
然后像使用hashref结构一样使用它

查看详细信息

或者,您可以取消对hashref的引用并进行浅层复制(对
%map
键/值的更改不会反映在
\%map1
上,等等)

而不是

my %map = $dbColsList[$dbCount]; 
您必须使用引用,因为
@codeList
中填充了它们=>
\%map1

my $map = $dbColsList[$dbCount]; 
然后像使用hashref结构一样使用它

查看详细信息

或者,您可以取消对hashref的引用并进行浅层复制(对
%map
键/值的更改不会反映在
\%map1
上,等等)


请给我们看看代码。你是如何循环列表的?我已经添加了代码。请给我们显示代码。如何在列表上循环?我已经添加了代码。或者,您可以取消对循环的引用
my%map=%{$codeList[$index]}并使用%mapnormally@salparadise您可以在循环中取消引用
my%map=%{$codeList[$index]}并使用%mapnormally@salparadise请tnx发表评论。