Ho una funzione che sta facendo alcuni calcoli e poi passa alcune proprietà in un'altra subroutine questo modo:Come posso usare gli hash come argomenti per le subroutine in Perl?
sub get_result {
my $id = 1;
my %diet = (result => 28,
verdict => 'EAT MORE FRUIT DUDE...'
);
my %iq = (result => 193,
verdict => 'Professor Einstien'
);
print_result($id, %diet, %iq);
}
sub print_result {
my $id = shift;
my %d = @_;
my %i = @_;
print "IQ: $id\n";
print "DIET RESULT: $d{result}\n";
print "DIET VERDICT: $d{verdict}\n";
print "IQ RESULT: $i{result}\n";
print "IQ VERDICT: $i{verdict}\n";
}
mio problema è che il risultato della stampa a (DIETA RISULTATO, DIETA VERDETTO) e (quoziente d'intelligenza, IQ RISULTATO) sono entrambi uguali. Come se la variabile% d e% i venissero popolate con le stesse variabili. Qualche idea del perché questo?
se provo spostando tutte e tre le variabili in questo modo:
my $id = shift;
my %d = shift;
my %i = shift;
ottengo il seguente errore:
Odd number of elements in hash assignment
Questo ha funzionato perfettamente. Penso che stia interpretando erroneamente i riferimenti tra i vari tipi. (Scalare, Matrice, Hash) Grazie Manni –
Potrebbe essere utile per gli altri se accettassi la risposta allora. (Non che mi dispiaccia i 25 punti di reputazione in alcun modo.) – innaM