[67] Perché passare ad una subroutine un elemento indefinito in un hash, lo crea?
Se eseguite una cosa del genere:
unaqualchefunz($hash{"questa chiave non esiste"});
Allora questo elemento si "autovivifica"; cioè nasce
all'improvviso sia che voi ci memorizziate qualcosa o meno. Il motivo
è che le funzioni ricevono gli scalari passati per
riferimento. Se unaqualchefunz() modifica $_[0], questo deve esistere
già, pronto a essere sovrascritto nella versione del
chiamante.
Questo problema è stato risolto a partire dal Perl5.004.
Di norma, il solo accesso ad un valore di una chiave per una chiave
inesistente, non crea permanentemente la chiave. Questo
è differente dal comportamento di awk.
Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan
Torkington. Tutti i diritti riservati.
Questa documentazione è libera; puoi ridistribuirla e/o
modificarla secondo gli stessi termini applicati al Perl.
Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di
codice in questo file sono rilasciati al pubblico dominio. Potete, e
siete incoraggiati a farlo, utilizzare il presente codice o qualunque
forma derivata da esso nei vostri programmi per divertimento o per profitto.
Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese
ma non è obbligatorio.
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per
porre quesiti di tipo tecnico, per rimanere aggiornato su meeting,
incontri, manifestazioni e novità su Perl.it. Iscriviti!