Perl/Istruzioni decisionali: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
m Update syntaxhighlight tags - remove use of deprecated <source> tags
Riga 8:
bambino fino a 14, ragazzo da 14 a 17, giovane da 17 a 23, adulto da 23 a 60, vecchio da 60 a 75, anziano oltre 75
 
<sourcesyntaxhighlight lang=perl>
%stadio = ( bambino => 14
, ragazzo => 17
Riga 14:
, adulto => 60
, vecchio => 75 );
</syntaxhighlight>
</source>
 
 
Riga 22:
Nel mezzo delle parentesi ( e ) va posta la condizione:
 
<sourcesyntaxhighlight lang=perl>
%stadio = ( bambino => 14
, ragazzo => 17
Riga 34:
# ma meglio:
print "all'eta' di $eta_ora sei un bambino \n" if ( $eta_ora < $stadio{bambino} ) ;
</syntaxhighlight>
</source>
 
L'istruzione di print verrà eseguita SOLO se $eta_ora sarà minore di 14 .
Riga 41:
È possibile associare un blocco all'istruzione di if:
 
<sourcesyntaxhighlight lang=perl>
$eta_ora = 27;
if ( $eta_ora < $stadio{bambino} ) { print "all'eta' di $eta_ora sei un bambino \n"; }
</syntaxhighlight>
</source>
 
'''NOTA''': Ora il punto e virgola non c'è perché le istruzioni sono dentro ad un blocco.
Riga 51:
È possibile inoltre associare più verifiche utilizzando il costrutto elsif:
 
<sourcesyntaxhighlight lang=perl>
%stadio = ( bambino => 14
, ragazzo => 17
Riga 84:
print "all'eta' di $eta_ora sei un bambino \n";
}
</syntaxhighlight>
</source>
 
Esiste anche un'altra forma più elegante :
 
<sourcesyntaxhighlight lang=perl>
%stadio = ( bambino => 14
, ragazzo => 17
Riga 121:
print "all'eta' di $eta_ora sei un bambino \n";
}
</syntaxhighlight>
</source>
 
Il caso '''else''' viene eseguito, se tutte le condizioni precedenti NON sono state verificate. Il caso '''else''' DEVE essere l'ultimo.
'''NOTA''': È possibile includere il caso else senza alcuna clausula elsif.Per esempio si sarebbe potuto scrivere:
 
<sourcesyntaxhighlight lang=perl>
%stadio = ( bambino => 14
, ragazzo => 17
Riga 171:
}
}
</syntaxhighlight>
</source>
 
=== unless , else ===
Riga 178:
Vediamo gli esempi precedenti con unless (dove è possibile applicarli).
 
<sourcesyntaxhighlight lang=perl>
%stadio = ( bambino => 14
, ragazzo => 17
Riga 189:
print "all'eta' di $eta_ora NON sei un bambino \n" unless ( $eta_ora < 14 ) ;
print "all'eta' di $eta_ora NON sei un bambino \n" unless ( $eta_ora < $stadio{bambino} ) ;
</syntaxhighlight>
</source>
 
'''NOTA''': il punto e virgola a indicare la fine dell'istruzione.Inoltre all'unless (se usato in fondo) si può associare SOLO una istruzione.
<sourcesyntaxhighlight lang=perl>
unless ( $eta_ora < $stadio{bambino} ) { print "all'eta' di $eta_ora NON sei un bambino \n"; }
</syntaxhighlight>
</source>
 
'''NOTA''': a differenza di if , unless non ha un "elsunless" ne tantomeno "elsif"
 
<sourcesyntaxhighlight lang=perl>
%stadio = ( bambino => 14
, ragazzo => 17
Riga 244:
}
}
</syntaxhighlight>
</source>
'''NOTA''':unless è utile per le funzioni es:
 
<sourcesyntaxhighlight lang=perl>
unless ( open ( FILE , "<pippo.txt" ) ) { print "non posso aprire pippo.txt"; exit 10; }
</syntaxhighlight>
</source>
 
===Ma il comodo Switch ?===
Purtroppo in modo "nativo" non esiste un costrutto switch ma l'autore del linguaggio propone questa soluzione utilizzando le [[Linguaggio Perl/Le istruzioni/Etichetta|etichette]] ed i [[Linguaggio Perl/Le istruzioni/Racchiuse o blocco|blocchi]] :
 
<sourcesyntaxhighlight lang=perl>
my $a = "aaa";
my $trovata = 0; # se trovata = 1 allora è stata trovata !
Riga 266:
}
print $trovata."\n";
</syntaxhighlight>
</source>
 
E quindi : si definisce un blocco con l'etichetta SWITCH
Riga 274:
Si sarebbe potuto scrivere:
 
<sourcesyntaxhighlight lang=perl>
my $a = "aaa";
my $trovata = 0; # se trovata = 1 allora è stata trovata !
Riga 285:
{ $trovata = 0; }
print $trovata."\n";
</syntaxhighlight>
</source>
 
Tuttavia è sicuramente più immediata la prima forma.