我在这里有一个关于 refs 的非常菜鸟的问题,尽管至少仍然让我感到困惑......
在下面的代码示例中,我正在尝试创建数组的哈希:
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Terse = 1;
$Data::Dumper::Quotekeys = 0;
my @a1 = ( 'a1', 1, 1, 1 );
my @a2 = ( 'a2', 2, 2, 2 );
my $a1_ref = \@a1;
my $a2_ref = \@a2;
my @a = ( $a1_ref, $a2_ref );
my %h = ();
for my $i ( 1 .. 2 ) {
$h{"$i"} = \@a;
}
say Dumper \%h;
Dumper 输出为
{
'1' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
],
'2' => $VAR1->{'1'}
}
这里的问题是:
为什么 $h{'2'} 是对 $h{'1'} 的引用?我正在尝试使用由 @a 数组组成的相同键值创建一个哈希 %h。我希望哈希的每个键值都具有基于@a 的自己的 AoA,但我得到的是对 $h{'1'} 的引用。我究竟做错了什么??
我想要达到的 Dumper 输出是:
{
'1' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
],
'2' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
]
}
任何帮助表示赞赏。提前致谢!
-担