ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | Introduzione | Panoramica | Form | Analisi Log | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Tutorial Perl
PRIMI PASSI CON IL PERL
Un esempio patico
IL LINGUAGGIO
VARIABILI E TIPI DI DATO
ESPRESSIONI REGOLARI
Le espressioni regolari del Perl.
BUILT-IN, LIBRERIA STANDARD ED ESTENSIONI
I moduli standard di libreria inclusi col Perl 5.001.
CONCLUSIONI


<<< IL LINGUAGGIO >>>

Un'avvertenza: innanzitutto il Perl non è un linguaggio semplice: nonostante tutto il complesso sia abbastanza logico e ordinato, è anche ricco di sottigliezze e particolarità (in gergo, "magie"), che ben sfruttate sono potenti strumenti, ma che risultano spesso sorprendenti per il principiante.

Il perl fondamentalmente è un interprete. Uno script tuttavia prima di essere eseguito viene letto per intero e viene verificata la sintassi. Lo script viene eseguito dopo essere stato compilato in un formato interno, ottimizzato per l'esecuzione. Questo ha lo svantaggio di richiedere una pausa prima di cominciare l'esecuzione. Per la verità questa pausa praticamente non si nota se non per script molto lunghi, tuttavia il tempo perso all'avvio di uno script comporta una esecuzione efficiente e rapida, quasi da compilatore. Sono in corso progetti di byte compilazione per "compilare" gli script in un lnguaggio intermedio (indipendente dalla piattaforma) e eliminare questa pausa per programmi ormai testati e "rilasciati". Il fatto che uno script sia comunque immediatamente eseguibile rende il perl un meraviglioso strumento per quei programmini "usa e getta" che spesso servono.

L'ultima versione del Perl è la 5.002. Comunque la versione 4.036 è rimasta stabile per anni ed è molto usata, cosicchè in pratica è come se fosse un altro dialetto corrente del Perl. La versione 5 mantiene al 99% la compatibilità con la versione 4, ma non viceversa. Comunque a scanso di guai non è infrequente avere tutte e due le versioni installate. Spesso se non si usato le caratteristiche "avanzate" del Perl 5 si sviluppa direttamente in Perl 4 (evitando naturalmente le incompatibilità col Perl 5) per avere uno script portabile anche a quelle installazioni dove l'amministratore è troppo pigro per installare il Perl 5. In realtà il Perl si è abbastanza stabilizzato con la versione 4. La versione 5 è un balzo in avanti per semplificare lo sviluppo di programmi "grandi" e non solo brevi script. Infatti molti programmi di una certa portata sono stati scritti in Perl: per citarne un paio famosi, majordomo (gestore di liste di posta elettronica) e mirror (programma per il mirroring di archivi ftp).

Il Perl 5 ha aggiunto al linguaggio strutture dati complesse, modularità, programmazione object-oriented e alcune modifica per consentire una eventuale compilazione. Tuttavia non è ancora stato scritto un compilatore Perl: se state cercando un argomento per la vostra tesi di dottorato... Comunque in questo articolo ci riferiremo principalmente al Perl 5, anche se molte cose sono valide per il Perl 4.

La sintassi del Perl è simile a quella del C, ma non uguale. Per esempio il seguente programma stampa tutti gli elementi dell'array a (di indice inferiore a 100) che sono maggiori di zero, fermandosi al primo elemento minore di zero. Probabilmente poteva essere scritto in maniera più semplice ma così si illustrano alcune caratteristiche della sintassi. Discuteremo delle variabili più avanti, in questo caso $i è una variabile e $a[$i] sono gli elementi dell'array.

$i=0;
LOOP:
while($i<100) {
last LOOP unless($a[$i]>=0);
next if($a[$i]==0);
print $a[$i];
} continue { ++$i }

Come si vede, rispetto al C, ci sono abbastanza differenze a cui stare attenti. Gli elementi sintattici convenzionali ci sono tutti: "if", "while", "for", ma anche "unless" (negazione di if), "until" (negazione di while), "foreach" (cicla sugli elementi di un array), anche se manca lo "switch". I comandi come "if" e "while" vogliono sempre le parentesi graffe, anche se sono seguiti da un comando solo: se si vogliono omettere le graffe, essi devono essere messi dopo il comando (come si vede nell'esempio). Per uscire dai cicli si usa il "last" e non il "break"; l'equivalente del "continue" è il "next" mentre il "continue" in Perl ha un significato diverso: segue i blocchi dei cicli e va premesso al blocco che deve comunque essere eseguito dopo un "next". Le label servono per etichettare i cicli e vengono utilizzate dai comandi "last" e "next" per uscire o continuare più cicli nidificati.

Gli operatori del C ci sono quasi tutti, con la stessa precedenza, in più ce ne sono degli altri: per esempio "." che effettua la concatenazione di stringhe (non ci sono record, quindi "." non è l'operatore di accesso a record), l'operatore "=~" di matching di stringhe con espressioni regolari, l'operatore "x" che ripete una stringa, gli operatori "eq", "ne" che confrontano stringhe (a differenza di "==" e "!=" che tentano di interpretare i loro argomenti come numeri), eccetera.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com