-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[13] Cos'è il suicidio di variabile e come si può prevenire?

Questo problema è stato risolto nel perl 5.004_05, dunque prevenirlo significa aggiornare la vostra versione di perl. ;)

Il suicidio di variabile si ha quando (temporaneamente o permanentemente) si perde il valore di una variabile. È causato da questioni di visibilità frutto dell'interazione tra my() e local() o con le chiusure o con variabili che sono iteratori alias per foreach() e con argomenti di subroutine. Di solito era facile perdere inavvertitamente il valore di una variabile in questa modo, ora però è più difficile. Prendete questo codice:

     my $f = 'pippo';
     sub T {
       while ($i++ < 3) { my $f = $f; $f .= 'pluto'; print $f, "\n" }
     }
     T;
     print "Infine $f\n";

Se state avendo a che fare con il suicidio di variabile, quel my $f nella subroutine non tira su una nuova copia di $f, il cui valore è pippo. L'output mostra che all'interno della subroutine, il valore di $f oltrepassa i limiti quando non dovrebbe, come in questo output:

	pippopluto
	pippoplutopluto
	pippoplutoplutopluto
	Infine pippo

La $f a cui è stato aggiunto "pluto" per tre volte dovrebbe essere una nuova $f. my $f dovrebbe creare una nuova variabile locale ogni volta che si compie il ciclo. L'output che ci si aspetta è:

	pippopluto
	pippopluto
	pippopluto
	Infine pippo

vedi in inglese

AUTORE E COPYRIGHT

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.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
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!
D:
Annunci Google