【发布时间】:2013-05-04 19:35:29
【问题描述】:
我在这里有一个关于 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
]
]
}
任何帮助表示赞赏。在此先感谢!
-丹
【问题讨论】: