我在这里有一个关于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;
转储器输出如下:
{
'1' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
],
'2' => $VAR1->{'1'}
}
这里的问题是:
为什么$h{'2'}是$h{'1'}的引用?我试图创建一个哈希%h,其中每个键值都由@a数组中的数组组成。我想让哈希的每个键值都有它自己基于@a的AoA,但我却得到了指向$h{'1'}的引用。我做错了什么?
我想要实现的Dumper输出是:
{
'1' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
],
'2' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
]
}
任何帮助都会受到欣然接受,提前感谢!
-丹