У меня есть вопрос о noob-ish здесь, касающийся ссылок, хотя по-прежнему мне мешает, по крайней мере ...
В приведенном ниже примере кода я пытаюсь создать хэш из массивы:
Как правильно использовать ссылки на perl
#!/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'}
}
вопрос здесь:
почему $ ч { '2'} ссылка на $ ч { '1'}? Я пытаюсь создать хеш% h с идентичными значениями ключа из массива массивов @a. Я хочу, чтобы каждый ключ-значение хэша имел свой собственный AoA, основанный на @a, но вместо этого я получаю ссылки на $ h {'1'}. Что я делаю не так??
Дампер выход я пытаюсь для того чтобы достигнуть это:
{
'1' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
],
'2' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
]
}
Любая помощь приветствуется. заранее спасибо!
-дан
Спасибо @ruakh, но это не совсем то, чего я пытался достичь. Я обновил свой пост с дополнительной информацией. это хороший совет относительно ссылочных обозначений. – Gnowl