Perl/Istruzioni composte: differenze tra le versioni

(stesura)
 
Per composte si intende quelle che chiamano almeno una o più funzioni/Minime.
Normalmente è la quasi totalità del codice scritto.
Infatti come le frasi possono essere composte da più frasi così uanuna istruzione può essere il risultato di una composizione di chiamate a funzione o parole semplici.
Dato che il lettore al momento conosce solo le variabili e la funzione print , l'esempio riportato NON è un esempio di "buon" codice ma aiuta a capire.
 
 
Nel nostro caso dato che la funzione scrive a video, prima viene scritta la più interna e poi la più esterna.
 
===Uso di || , && , And e Or===
Si è visto che fra scalari è possibile usare i booleani and e or nelle varie forme : numeriche e logiche.
Tuttavia è possibile usarli anche sulle istruzioni , e servono a creare una successione di istruzioni ma condizionate dall'esito delle istruzioni precedenti.
Vediamone le caratteristiche:
 
<istruzione1> or <istruzione2>
 
Il Perl esegue l'istruzione 1 quindi se questa da un esito "falso" viene eseguita la istruzione 2 .
Se l'istruzione 1 risulta invece "vera" l'istruzione 2 non verrà eseguita.
 
 
<istruzione1> and <istruzione2>
 
Il Perl esegue l'istruzione 1 quindi se questa da un esito "falso" NON viene eseguita la istruzione 2 .
Se l'istruzione risulta invece "vera" l'istruzione 2 verrà eseguita.
 
E' possibile concatenare più istruzioni tuttavia è sempre meglio mantenere il codice il più comprensibile possibile.
 
La differenza fra || e or oppure fra && e and è la precedenza nell'eseguire le operazioni : || e && hanno precedenza maggiore rispetto a or e and quindi necessitano l'utilizzo di parentesi per "delimitare" il campo di utilizzo:
 
Vediamo l'esempio che segue anticipando che la funzione unlink cancella dei file.Quindi si vuole che si cancellino i file indicati e che se questa non riesce si esegua una funzione gripe e poi si vada oltre (next LINE):
 
unlink "alpha", "beta", "gamma"
or gripe(), next LINE;
 
unlink("alpha", "beta", "gamma")
|| (gripe(), next LINE);
195

contributi