Ho una domanda molto noob qui riguardo i refs, anche se comunque mi confondo per lo meno ...
Nell'esempio di codice qui sotto, sto provando a creare un hash di array:
come utilizzare correttamente i riferimenti 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;
L'uscita Dumper è
{
'1' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
],
'2' => $VAR1->{'1'}
}
La domanda qui è:
perché è $ h { '2'} un riferimento a $ h { '1'}? Sto provando a creare un hash% h con valori-chiave identici costituiti dall'array array @a. Voglio che ogni valore-chiave dell'hash abbia il proprio AoA basato su @a, ma sto ottenendo riferimenti a $ h {'1'}. Che cosa sto facendo di sbagliato??
uscita Il Dumper sto provando a achive è:
{
'1' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
],
'2' => [
[
'a1',
1,
1,
1
],
[
'a2',
2,
2,
2
]
]
}
Qualsiasi aiuto apprezzato. Grazie in anticipo!
-Dan
Grazie a @ruakh, ma non è esattamente quello che stavo cercando di ottenere. Ho aggiornato il mio post con maggiori informazioni. questo è un buon consiglio per quanto riguarda le notazioni di riferimento. – Gnowl