Il linguaggio Perl è uno strumento formidabile: al tempo stesso un po' magico
ed estremamente elegante, potente e compatto. Superate le prime resistenze di
chi tradizionalmente ha avuto a che fare con linguaggi di programmazione come C,
Fortran o Pascal, il Perl si lascerà apprezzare per le sue doti straordinarie.
Innanzi tutto la compattezza: oltre ad essere uno dei suoi maggiori pregi è
all'inizio anche il più grosso ostacolo; gli script dei programmatori esperti
risultano essere molto sintetici e poco comprensibili per un principiante. Con
il tempo, acquistando familiarità con il linguaggio tutto apparirà estremamente
chiaro e l'eleganza del Perl potrà essere apprezzata in ogni sua parte. Anzi
potrà anche accadere di trovare fastidiose certe ridondanze e la pignoleria
delle definizioni presenti in altri linguaggi di programmazione. Infine la
potenza: con poche istruzioni saremo in grado di compiere operazioni che con
altri strumenti sarebbero risultate talmente complesse o noiose che spesso si
sarebbe cercato di agirare il temuto ostacolo. Col passare del tempo e con
l'aumentare della mia esperienza nell'uso del Perl non è affatto diminuito lo
stupore per l'eleganza, la sinteticità e l'efficacia con cui il Perl mi premette
di effettuare determinate operazioni: è per questo che lo considero uno
strumento circondato da un alone di magia che non si finisce mai di
studiare e che rivela in ogni occasione un nuovo modo in cui il medesimo
algoritmo può essere implementato.
Oggi il Perl gode di una certa notorietà in quanto è probabilmente lo
strumento più usato per sviluppare script CGI su server HTTP nel mondo Internet
ed Intranet.
Il linguaggio Perl si sposa perfettamente con il sistema UNIX; anche se oggi
ne sono stati effettuati dei porting su numerose altre piattaforme
(OS/2, MS-DOS, Windows 95, Windows NT, solo per citarne alcune) l'ambiente più
naturale per sviluppare ed eseguire script in Perl rimane UNIX, dove è possibile
integrare e far interagire gli script con i numerosi strumenti presenti nel
sistema (sto pensando a sed, awk, grep, mail
e più in generale alle modalità operative e di intercomunicazione tra i processi
offerte da questo ambiente) ed ottenere il meglio dal linguaggio.
Chi ha già un po' di esperienza con UNIX e con alcuni suoi strumenti
(vi, grep, ecc.) si troverà un passo avanti rispetto ad altri
nell'esplorazione del linguaggio. Tuttavia questo brevissimo fascicolo è stato
pensato come uno strumento elementare per un primo approccio al Perl: nessun
prerequisito è richiesto per affrontare la lettura di queste pagine; è però
utile poter disporre di un interprete Perl per effettuare direttamente le prove
ed i test necessari, anche solo sperimentando gli esempi proposti nei vari
capitoli.
Questo fascicolo non ha la pretesa di trattare in modo esaustivo l'argomento:
si tratta semplicemente di un'introduzione elementare per chi non ha mai
utilizzato il Perl e, prima di affrontare letture più approfondite ed
impegnative, decide di voler dare uno sguardo ad ampio raggio alle potenzialità
offerte dal linguaggio.
Per chi desiderasse sapere tutto sul Perl consiglio sicuramente la lettura
dell'ottimo testo di Larry Wall (autore del Perl) e Randal L. Schwartz,
Programming Perl, edito dalla O'Reilly & Associates (1991). Questo
libro ha un approccio didatticamente assai interessante: in un primo capitolo
descrive con una serie di esempi pratici le principali caratteristiche del
linguaggio, mettendo l'utente smaliziato nelle condizioni di scrivere i primi
script di una certa sostanza. Seguono quindi un paio di capitoli in cui si entra
nei dettagli dei vari aspetti del Perl. Infine ampio spazio è lasciato alla
soluzione di problemi pratici (practical programming) anche di una
certa complessità.
Una guida sintetica di riferimento è invece offerta dal libricino di Johan
Vromans, Perl 5 -- Desktop Reference, edito dalla stessa O'Reilly &
Associates (1996).
Per un approccio più tradizionale e ``passo-passo'' al linguaggio, è anche da
ricordare il testo di Randal L. Schwartz, Learning Perl, sempre della
O'Reilly & Associates (1993).
Questo fascicolo è strutturato in otto brevi capitoli. Il primo è una
introduzione sintetica ed informale alla programmazione ed ai concetti
riguardanti le strutture dati. Sono stato a lungo incerto sull'opportunità di
inserire un capitolo come questo in una guida introduttiva al Perl. Alla fine ho
deciso di lasciare questo primo capitolo nella speranza che possa essere utile a
quanti si accostano per la prima volta alla programmazione e quindi necessitano
se non altro di una prima infarinatura sulla terminologia usata in questo
contesto.
Il secondo capitolo introduce, in modo forse un po' brusco ed informale, le
basi del linguaggio Perl. Nel capitolo 3 questi concetti vengono sviluppati
introducendo le strutture dati in Perl. Nel capitolo 4 vengono affrontati gli
operatori logici e le strutture di controllo del linguaggio. Il capitolo 5
affronta uno degli aspetti più importanti ed interessanti del linguaggio: le
espressioni regolari ed il pattern matching. Nel sesto
capitolo vengono esaminate in estrema sintesi alcune delle variabili
speciali usate dal linguaggio, mentre nel capitolo 7 si affronta il
problema dell'interazione di uno script Perl con altri programmi esterni. Il
capitolo 8 riporta una descrizione sintetica delle principali istruzioni divise
per categorie funzionali.
Come si intuirà fin dalle prime pagine, in questo fascicolo non sono mai
entrato nei dettagli di ciò che espongo: descrivere ogni particolare sintattico
delle istruzioni del linguaggio sarebbe stato assai noioso ed avrebbe
trasformato questa guida introduttiva in un manuale tecnico. L'approccio scelto
è stato molto diverso: ho preferito fornire una serie di flash ad ampio spettro
sulle possibilità offerte dal linguaggio, lasciando il compito di chiarire (o
far intuire) alcuni dettagli sintattici ai numerosi esempi e tabelle presenti in
ogni capitolo.
Le convenzioni tipografiche impiegate nel testo sono quelle ormai consuete
per questo genere di pubblicazione: con il carattere typewriter ho
indicato le istruzioni Perl o l'output di un comando; il carattere
slanted è stato usato per rappresentare l'input immesso dall'utente,
mentre nella descrizione delle istruzioni il carattere italic è stato
usato per descrivere ciò che dovrà essere sostituito con le variabili e le
espressioni vere e proprie nel programma dell'utente.
Spero con questo fascicolo di avere effettivamente fornito un utile strumento
didattico e non soltanto di aver riprodotto in forma sintetica ciò che meglio di
me hanno già scritto altri autori. Ogni eventuale commento, suggerimento,
critica, sarà bene accetto: le mie mailbox sono sempre aperte per chiunque!