Perl/Istruzioni particolari su blocchi o etichette
Wikibooks, manuali e libri di testo liberi.
< Perl
Come anticipato precedentemente le etichette risultano particolarmente utili con le istruzioni particolari last, redo, next. Queste modificano l'esecuzione del programma "saltando" opportunamente all'interno di un blocco/etichetta.
In realtà queste non sono istruzioni ma parole chiave. La differenza verrà spiegata più avanti.
[modifica] Last
Questa istruzione consente di terminare "prematuramente" un blocco o una etichetta.
last ; # usato un blocco last <ETICHETTA>; # indica di uscire rispetto quale etichetta
- NOTA
- Dato che l'uscita prematura da un blocco avviene a seguito di una scelta , si consiglia di leggere quanto riguarda le decisionali e i cicli per poter comprendere meglio gli esempi.
Vediamo questo esempio:
my $b = 15; my $stop = 17; ETICHETTA_TRE : while ( $b < 20 ) { print " etichetta tre (b=$b)\n"; $b++; if ( $stop == $b ) { last ETICHETTA_TRE; } } print "b=$b\n";
che produce:
etichetta tre (b=15) etichetta tre (b=16) b=17
[modifica] Redo
Questa istruzione consente di ritornare allo stesso punto di quando è iniziata l'ultima iterazione.
redo ; # usato un blocco redo <ETICHETTA>; # indica su quale etichetta
- NOTA
- Dato che l'uscita prematura da un blocco avviene a seguito di una scelta , si consiglia di leggere quanto riguarda le decisionali e i cicli per poter comprendere meglio gli esempi.
Vediamo questo esempio:
my $b = 15; my $stop = 17; my $ripetizioni=2; ETICHETTA_TRE : while ( $b < 20 ) { print "etichetta tre (b=$b , r=$ripetizioni)\n"; if ( $stop == $b and $ripetizioni > 0) { $ripetizioni--; redo ETICHETTA_TRE; } $b++; }
che produce :
etichetta tre (b=15 , r=2) etichetta tre (b=16 , r=2) etichetta tre (b=17 , r=2) # primo redo etichetta tre (b=17 , r=1) # secondo redo etichetta tre (b=17 , r=0) etichetta tre (b=18 , r=0) etichetta tre (b=19 , r=0)
[modifica] Next
Questa istruzione consente di "saltare" all'elemento successivo.
next ; # usato un blocco next <ETICHETTA>; # indica su quale etichetta
- NOTA
- Dato che l'uscita prematura da un blocco avviene a seguito di una scelta , si consiglia di leggere quanto riguarda le decisionali e i cicli per poter comprendere meglio gli esempi.
Vediamo questo esempio:
my $b = 15; my $stop = 17; my $ripetizioni=2; ETICHETTA_TRE : while ( $b < 20 ) { $b++; if ( $stop < $b and $ripetizioni > 0) { $ripetizioni--; next ETICHETTA_TRE; } print " etichetta tre (b=$b , r=$ripetizioni)\n"; }
che produce :
etichetta tre (b=16 , r=2) etichetta tre (b=17 , r=2) etichetta tre (b=20 , r=0)