Sto ancora cercando di risolvere il mio hash dereferencing. Il mio attuale problema è che ora sto passando un hashref a un sottotitolo e voglio dereferenziarlo all'interno di quel sottotitolo. Ma non sto trovando il metodo/sintassi corretto per farlo. All'interno del sottotitolo, voglio ripetere le chiavi di hash, ma la sintassi per un hashref non è la stessa cosa di un hash, che so come fare.Come si può trasferire un riferimento di hash Perl che è stato passato a una subroutine?
Quindi quello che voglio è quello di fare questo:
sub foo {
%parms = @_;
foreach $keys (key %parms) { # do something };
}
ma con un rifhash essere passato in al posto di un hash.
Eventuali puntatori (gioco di parole non previsto) sono i benvenuti.
Grazie.
Utilizzare lo spostamento anziché @_ ha fatto il trucco e, naturalmente, utilizzando uno scalare anziché un hash per la variabile. Codice di lavoro: sub foo { $ parms = shift; foreach $ key (keys% $ parms) {print "$ key: $$ parms {$ key} \ n"; } } Grazie! – sgsax
'$ parms -> {$ key}' è probabilmente un po 'preferito da '$$ parms {$ key}' – toolic
'shift' vs.' @ _' non è rilevante. 'my ($ hashref) = @_;' funzionerà altrettanto bene. –