Paradigma di lavoro
Abbiamo iniziato il corso con qualche esempio pratico, rimandando l'introduzione teorica. Colmiamo adesso questa lacuna
precisando alcuni aspetti teorici che riguardano la programmazione in Perl. Perl è un linguaggio molto permissivo, ovvero
concede molta libertà al programmatore: ciò rappresenta un possibile problema di sicurezza,
perché troppa libertà significa essere potenzialmente in grado di creare qualche problema ("da un grande potere deriva una grande responsabilità", Stan Lee).
Per questo motivo solitamente gli script Perl iniziano con queste due direttive
use strict ; use warnings ;
La prima direttiva (use strict
) termina l'esecuzione nel caso vengano trovati dei comandi "pericolosi", mentre la seconda
(use warnings
) produce delle segnalazioni utili durante l'esecuzione del codice.
Sintassi
Precisiamo adesso alcuni aspetti della sintassi. Perl permette una sintassi flessibile. Ad esempio le
chiamate alle funzioni possono essere espresse con o senza parentesi, con o senza virgole di separazione tra i parametri (come in PHP).
Vediamo alcuni esempi considerando la funzione print
$foo = "Ciao Mondo!" ; print($foo, "\n") ; print $foo, "\n" ; print "Prima riga Seconda riga\n" ;
Che produce come risultato
Ciao Mondo! Ciao Mondo! Prima riga Seconda riga
Notiamo in particolare come il line break venga rispettato dell'interprete perché incluso tra doppi apici: questo è un effetto
dell'interpolazione delle stringhe in Perl.
Vediamo adesso un esempio di utilizzo della variabile riservata $_
$_ = "Stringa di default\n" ; print ;
che stampa
Stringa di default
questo perché la variabile $_
viene assunta come parametro di default nella chiamata alla funzione print
.
Variabili globali e locali
Inserendo la direttiva use strict
nei nostri script potremmo avere qualche difficoltà di esecuzione. Ad esempio,
inserendo tale direttiva negli esempi qui sopra molto probabilmente si otterrà un errore di questo genere
Global symbol "$foo" requires explicit package name at tutorial-05.pl line 6.
Ciò accade perché lavorando con la direttiva strict tutte le variabili sono trattate come globali, mentre chiaramente
foo
non lo è. Per indicare all'interprete che la variabile è locale usiamo la keyword my.
Il codice scritto più sopra diventa quindi
my $foo = "Ciao Mondo!" ; print($foo, "\n") ; print $foo, "\n" ; print "Prima riga Seconda riga\n" ;
In questo modo lo script dovrebbe girare senza alcun errore.