ここで参照に関して非常に初心者っぽい質問がありますが、少なくとも私にはまだ混乱しています...
以下のコード例では、配列のハッシュを作成しようとしています:
#!/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'} への参照なのかということです。@a array-of-arrays で作成された同一のキー値を持つハッシュ %h を作成しようとしています。ハッシュの各キー値に @a に基づく独自の AoA を持たせたいのですが、代わりに $h{'1'} への参照を取得しています。私は何を間違っていますか??
私が達成しようとしているダンパーの出力は次のとおりです。
{
'1' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
],
'2' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
]
}
どんな助けでも感謝します。前もって感謝します!
段