Michele Beltrame
Corso di Perl - Introduzione al linguaggio

Data di pubblicazione: Questo articolo è stato pubblicato su Dev n°75 e in questo sito per autorizzazione espressa del "Gruppo Editoriale Infomedia" (http://www.infomedia.it).

© 2007 Michele Beltrame. Michele Beltrame vive a Maniago, PN, è programmatore Perl e convinto sostenitore del movimento Open Source. Può essere raggiunto via e-mail all'indirizzo mb@italpro.net

© Perl Mongers Italia. Tutti i diritti riservati.


Introduzione

Con l'espansione di Internet, Perl si è progressivamente diffuso come linguaggio di scripting, cioè come linguaggio interpretato da usarsi per creare, in maniera semplice e veloce, applicazioni server-side, tra cui script CGI. In realtà Perl è molto più di questo, in quanto si tratta di un completo linguaggio di programmazione con cui si possono creare applicativi di ogni tipo, dai semplici script per la gestione del sistema a complesse applicazioni con tanto di sofisticata interfaccia grafica. Uno degli aspetti che ha portato al grande successo di Perl è la sua portabilità: lo stesso sorgente può infatti essere eseguito, praticamente senza alcuna modifica, su piattaforme che vanno da Linux a Windows a MacOS. Perl è attualmente utilizzato da un numero grandissimo di sviluppatori, e questo ha fatto sì che ora sia possibile trovare in giro qualsiasi libreria per il linguaggio, per l'interfacciamento con qualsiasi software o periferica, rendendolo quindi adatto per qualsiasi uso, al pari di linguaggi dal nome più blasonato quali C++ oppure Java.


Compilato o interpretato?

Perl è tradizionalmente un linguaggio interpretato. Se dal punto di vista della velocità può rappresentare un problema, questo è stato invece uno dei punti di forza del linguaggio: il non dover compilare i sorgenti semplifica infatti notevolmente lo sviluppo in quanto si possono tranquillamente sviluppare i propri programmi sul proprio computer di casa (che ad esempio gira sotto Microsoft Windows o Linux) e poi caricare direttamente i sorgenti sul server di rete su cui devono girare (nel quale è magari installato FreeBSD o qualche altro sistema operativo). Altro vantaggio di un linguaggio interpretato è la semplicità con cui si può correggere un errore in un sorgente già caricato sul server: basta un client FTP ed un normale editor di testi ed il gioco è fatto.

Nonostante tutto, ad un certo punto si è presentata la necessità, per alcuni scopi che necessitano di una certa velocità di elaborazione, di compilare i sorgenti Perl in eseguibili nativi. Il primo a tentare di risolvere il problema è stato Malcom Beattie, il quale ha creato due moduli che si occupano l'uno di compilare il sorgente Perl in un bytecode semi-interpretato (qualcosa di simile ai file .class del Java) e l'altro di convertire il sorgente da Perl a C. La prima soluzione in effetti velocizza l'esecuzione del tutto, ma il programma generato rimane dipendente da troppe librerie "accessorie". Il secondo modulo crea invece un codice C poco piacevole da leggere ma facilmente compilabile con un qualsiasi compilatore quale ad esempio GCC: si può a questo punto scegliere se ottenere un eseguibile linkato dinamicamente (ed in questo caso bisognava portarsi dietro una libreria) oppure un gigantesco eseguibile linkato staticamente. Le soluzioni di Malcom sono quelle che ancora oggi si rivelano vincenti per la compilazione del Perl: il problema era che solo una parte dei programmi Perl potevano essere dati in pasto al suo software, perennemente in fase di alpha testing. Oggi esistono alcuni compilatori commerciali di buon livello quali Perl2Exe e PerlApp.


I vari kit di sviluppo

Esistono ormai varie distribuzioni di Perl, per molte piatttaforme. La più famosa è naturalmente l'originale, quella creata da Larry Wall, che funziona praticamente su tutti i sistemi Unix esistenti e, nelle versioni più recenti, anche su Windows. La versione attuale è la 5.8.2, in costante aggiornamento. Parallelamente è partito un progetto di riscrittura dell'intero pacchetto, con ridefinizione radicale del linguaggio in se, che dovrebbe portare a Perl 6. Di fatto sotto Unix non serve in generale preoccuparsi di procurarsi il linguaggio, in quanto viene incluso nell'installazione base della quasi totalità dei sistemi. Esistono poi le distribuzioni per Windows, la più nota delle quali è ActivePerl, alla quale collabora la stessa Microsoft, e che implementa più o meno tutte le caratteristiche del Perl originale. Recentemente sono inoltre comparsi i primi tool di sviluppo grafici. La stessa ActiveState, creatrice di ActivePerl e PerlApp, propone un IDE, Komodo, che supporta anche un certo numero di altri linguaggi ed include un debugger.


Risorse in rete

Il maggiore supporto al linguaggio arriva da Internet: sono disponibili infatti risorse di ogni tipo. Il sito "istituzionale" è http://www.perl.com, creato dal Perl guru Tom Christiansen ed attualmente gestito da O'Reilly & Associates: qui si trovano i link a tutto quello che serve per iniziare a programmare, nonché tutte le ultime novità sul linguaggio. Altro sito leggendario è il CPAN (Comprehensive Perl Archive Network, http://www.cpan.org), che raccoglie praticamente tutti i moduli (librerie) esistenti ed ha mirror in tutto il mondo. Molto interessante è anche Perl Mongers (http://www.perl.org), contente vari link interessanti ed è utilizzabile ad esempio per cercare un posto di lavoro che coinvolga la conoscenza del Perl. Un valido aiuto, un punto di incontro dove scambiarsi consigli sul Perl oppure semplicemente fare quattro chiacchiere è rappresentato dagli user group di Perl Mongers (http://www.pm.org), moltissimi e sparsi in tutto il mondo: dal sito centrale è possibile accedere a quelli relativi alle specifiche aree geografiche (in Italia ci sono Bologna.pm, Nordest.pm, Pisa.pm, Roma.pm, Salerno.pm e Torino.pm). Su quest'ultimo sito inoltre possibile acquistare un po' di abbigliamento "perloso", nonché registrarsi in modo da essere reperibili da altri programmatori che vivono nell'area dove si risiede. PerlMonks (http://www.perlmonks.com) è una grandiosa risorsa dove chiedere aiuto, cercare informazioni e scambiare opinioni; è frequentato dai più noti programmatori Perl a livello mondiale. Il punto di riferimento in italiano è invece Perl.It (http://www.perl.it). Un corso online e molti script da cui trarre spunto sono presenti su http://www.html.it. Ottime risorse sono inoltre i newsgroup: in Italia è stato attivato it.comp.lang.perl, in cui c'è poco "rumore di fondo" ed un po' di gente disponibile a fornire preziosi consigli.


Un primo sguardo al linguaggio

A livello sintattico Perl, come più recentemente anche Java, ha ereditato quasi tutto da C. Di seguito è riportato il classico sorgente che scrive "Ciao, Mondo!":

#!/usr/local/bin/perl5 -w

print "Ciao, Mondo!\n";

La prima riga è di vitale importanza solo in ambiente Unix, in quanto si occupa di invocare l'interprete quando lo script viene eseguito chiamandolo dalla linea di comando semplicemente digitandone il nome (altrimenti sarebbe stato necessario digitare perl -w nomeprog.pl per garantirne l'esecuzione). Sotto Windows la presenza di tale riga non dà alcun fastidio, in quanto il cancelletto indica che ogni carattere da quel momento in poi e fino alla fine della riga deve essere considerato commento, e quindi non interpretato. È invece importante, se si usa Windows, garantire l'associazione tra i file aventi estensione .pl (e magari .cgi) e l'interprete: questo è configurato in automatico da alcune distribuzioni provviste di installazione, come ActivePerl, mentre per altre bisogna provvedere manualmente. Guardando bene la prima riga si nota anche il flag -w: questo indica all'interprete di visualizzare tutti i warning (vedremo nelle prossime puntate di che cosa si tratta di preciso), ed il suo utilizzo è sempre raccomandato, ma sfortunatamente non abbastanza diffuso. L'unica riga vera e propria di codice è quella dell'istruzione print, che si occupa di stampare a video la stringa contenuta tra i doppi apici. Il \n con cui termina la stringa indica a print di aggiungere un line feed (cioè di andare a capo) a fine riga. Qualche lettore che si diletta con il linguaggio C si sarà accorto che non è necessario includere alcuna libreria per l'utilizzo delle funzioni standard del linguaggio: l'interprete Perl include infatti già tutte le funzioni di base, e moltissime sono disponibili nei moduli presenti direttamente nelle distribuzioni, i quali vanno però inclusi con l'apposita istruzione, come vedremo in futuro. Di fatto la maggior parte delle operazioni può essere compiuta senza l'ausilio di librerie esterne ed anche in più modi: questo è un aspetto caratteristico del Perl, infatti una tipica frase di chi usa questo linguaggio è "c'è più di un modo per fare la stessa cosa".


Conclusioni

Con questo primo articolo si è più che altro cercato di far capire cos'è Perl, e di introdurre la filosofia che c'è dietro il linguaggio: questa di fatto si comprenderà a poco a poco, ed il perché dei luoghi comuni sulla pigrizia dei programmatori Perl sarà chiaro nelle prossime lezioni.

Gli utilizzatori del Perl costituiscono di fatto un vera e propria comunità (come si noterà visitando il sito degli user group dei Perl Mongers, descritto precedentemente): da anni negli Stati Uniti, e più recentemente anche in tutto il resto del mondo, meeting, conferenze e cene sono piuttosto frequenti. L'interprete Perl è disponibile con licenza open source (Artistic o GPL, a scelta): gli utilizzatori hanno ereditato tale filosofia, facendo del confronto con gli altri l'aspetto più importante del loro lavoro.

Dal prossimo numero inizieremo a vedere nel dettaglio i costrutti di base di Perl, in modo da poter essere operativi con il linguaggio sin dalle prime lezioni. Chi ha più fretta può nel frattempo dare un'occhiata alle validissime risorse in Internet elencate sopra.