Ho una domanda che sembra semplice, ma non riesco a capirlo. Dì che ho un riferimento all'hash in Perl. Voglio ottenere una matrice di valori attraverso una serie di chiavi.Perl: Hash ref che accede alla serie di chiavi
Ecco come sarebbe lavorare con un hash, non un riferimento hash:
my %testHash = ("a" => 1, "b" => 2, "c" => 3);
my @testKeys = ("a", "b", "c");
my @testValues = @testHash{@testKeys};
Ora supponiamo che ho un riferimento ad hash,
my $hashRef = {"a" => 1, "b" => 2, "c" => 3};
Ho provato due modi seguenti:
my @values = @{$hashRef->{@testKeys}};
my @values = $hashRef->{@testKeys};
Ma nessuno è corretto. C'è un modo corretto, o devo semplicemente dereferenziare l'hash ref ogni volta che voglio farlo?
In questo caso, '@ $ rifhash {} @testKeys' funziona troppo. Preferivo le parentesi '{}' come più esplicite, ma mi piacerebbe andare verso la variante meno rumorosa ora. – ephemient
@ephemient Grazie per avermi aiutato a migliorare la risposta. –
Ah, credo di essere stato intrappolato dalla mia mancanza di comprensione del fatto che la freccia è solo una comoda abbreviazione. –