Perl/Istruzioni composte: differenze tra le versioni
stesura |
(Nessuna differenza)
|
Versione delle 09:48, 14 dic 2006
Composte
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ì uan 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.
$a = "testo di prova"; print "risultato della prima print:". (print join( " " , "inizio seconda print",'$a',"=","$a","fine seconda print\n")). " fine prima print\n";
che produce:
inizio seconda print $a = testo di prova fine seconda print risultato della prima print:1 fine prima print
Entriamo nel dettaglio:
La prima riga è una istruzione Minima ed assegna a $a il valore "testo di prova".
Dalla seconda riga alla quarta riga è una istruzione composta:
c'è una "prima" funzione print alla quale gli si chiede di scrivere "risultato della prima print:" seguito da "qualcosa fra parentesi" seguito da " fine prima print\n".
Alla terza riga il "qualcosa fra parentesi" è di nuovo una print alla quale gli si chiede di scrivere una stringa che è il risultato ottenuto dalla funzione join.Alla join si chiede di "giuntare" con spazi 5 stringhe contenenti "inizio seconda print" '$a' "=" "$a" "fine seconda print\n".Come per l'algebra , prima di poter procedere occorre "agire" sulle parentesi più interne così il Perl risolve PRIMA le "funzioni" più interne e poi quelle più esterne.
Ecco perchè viene mostrata prima le scritte della seconda e poi le scritte della prima.
Succede così anche in meccanica : per poter montare un pezzo che ha a sua volta un pezzo interno, occorre montare prima l'oggetto interno e racchiuderlo in quello esterno. Si può pensare alla "matriosca".
Nel nostro caso dato che la funzione scrive a video, prima viene scritta la più interna e poi la più esterna.