Indice

Capitolo 1.
Introduzione a Perl



Perl è stato creato da Larry Wall e molti altri programmatori ''across the Internet''©. Lo scopo del linguaggio era aiutare la configurazione di un complesso sistema multipiattaforma della cui gestione Larry era stato incaricato. Serviva un tool con una buona programmabilità che consentisse il parsing dei file di configurazione e di log nella maniera più semplice possibile. Come tutte le cose belle, cresce, si sviluppa, si diffonde, si amplia in possiblità e sintassi. Diventa il linguaggio che qui presentiamo.

     Mi interessa delimitare bene quello che effettivamente si copre in questo corso. Perl è un linguaggio immenso per complessità (nel senso buono) della sintassi e per possibilità offerte dalle librerie (moduli) che si possono reperire su Internet. Praticamente qualsiasi task di amministrazione, comunicazione, catalogazione, interazione, computazione e qwertyzzazione è già stato affrontato, sviscerato e risolto. Molti di questi moduli sono talmente di uso comune che sono entrati a far parte della libreria standard di Perl, ossia di quell'insieme di moduli che viene fornito con il codice sorgente dell'interprete da compilare.

     In questo corso in realtà noi copriremo la sintassi ed i concetti di base, daremo uno sguardo alla programmazione orientata agli oggetti e ad alcune altre caratteristiche avanzate e studieremo alcuni moduli. Molti di questi tuttavia (e persino la maggior parte delle funzioni builtin) non saranno invece contemplate. Ad esempio la parte di networking a basso livello non è qui presentata. Il motivo di questa scelta è che il corpo di materiale incluso nel programma è a stento contenibile in 10 lezioni, aggiungere altri concetti comporterebbe un corso di lunghezza estenuante.

     Questo non esclude che un riscontro di interesse verso materie specifiche (ad esempio la programmazione con i socket, l'interfacciamento ai database SQL, la creazione di interfaccie con Gtk, la scrittura di CGI con CGI.pm) non possano originare minicorsi a se stanti intesi come prolungamento del corso principale.

     Per ora godetevi la corsa, poi fatemi sapere! Buon viaggio! ;-)


   1. La filosofia di Perl

Perl è un linguaggio particolare, modellato sulla lingua inglese parlata e improntato alla snellezza. Mutua la maggior parte della sua sintassi da due linguaggi ben noti (almeno superficialmente) a qualsiasi utente UNIX: il C e gli script di shell (sh/csh).

     E fin qui nulla di sconvolgente. Perché mai Perl sarebbe così particolare? Spiegarlo tutto qui in introduzione non è concepibile; è questo un feeling che si apprezza con la progressiva conoscenza del linguaggio. Quello che sin da ora posso anticiparvi (e non sono parole a vanvera, ne illazioni pronunciate da un Microsoft Certified Solution Reseller) è che Perl è in grado di capire quello che voi volete da lui. E per capire intendo proprio quel modo che hanno le persone di capire una frase anche quando questa non è totalmente univoca e lascerebbe un minimo margine di ambiguità. Perl sa novantanove volte su cento quello che gli state chiedendo. Insomma: una volta su cento potete anche programmare voi! ;-)

     Certo, Perl non è un'intelligenza artificiale, non vi sto proponendo di chiaccherare con il vostro interprete Perl: in fondo non è mica Emacs (vero Little John? ;-) Ma scoprirete mano a mano che la programmazione si fa più profonda e intricata che Perl è una vera e propria lingua, solo che è stata adattata un minimo per un calcolatore. E se ancora non mi credete, sappiate che esiste un concorso annuale di poesia scritta in Perl! Attenzione: non CON Perl! IN Perl, usando sintassi Perl e parole Perl per comporre un testo che è un vero programma Perl, ma che è anche una poesia! Fanatismo? Seguitemi e potrete giudicare da voi. Magari deciderete di diventare fanatici voi stessi!


   
2. Un linguaggio interpretato

Perl è nato come linguaggio interpretato, con tutti i vantaggi e gli svantaggi che questo comporta.

     Vantaggi: Svantaggi:
Intendiamoci, la lentezza ed i rischi per il codice non sono assolutamente aspetti allarmanti della questione. La lentezza è sicuramente più incisiva dell'equivalente programma scritto in C; per questo Perl non è adatto alla stesura di grossi programmi di calcolo che dovranno presumibilmente elaborare per mesi e mesi consecutivi stream di dati a ciclo continuo. Questo no.

     Ma se il vostro programma conclude l'elaborazione in mezz'ora quando il C avrebbe impiegato 15 minuti, la differenza è abbondantemente compensata dal tempo che avete risparmiato in fase di scrittura del codice. Perl è infatti incredibilmente veloce tanto nella fase cosidetta di prototyping, quanto in quella di stesura effettiva. La prima fase è quel momento iniziale in cui il programma viene delineato, se ne realizza la struttura generale, si individuano le parti, le sezioni e i pezzi di codice da scrivere ( è un po' come segnare con il carboncino la tela prima di dipingerla ).

     La fase successiva ( quella di programmazione, quando i colori effettivamente finiscono sulla tela ) è altrettanto veloce. Perl ha una sintassi incredibilemente compatta e rapida. Con pochi caratteri è possibile esprimere notevoli concetti.


   
3. Un linguaggio parlato

Dato che non mi avete creduto guardate qui:


Perl e la poesia Fig. 1
 
    1:  #!/usr/bin/perl
    2: 
    3:  APPEAL:
    4: 
    5:  listen (please, please);
    6: 
    7:      open yourself, wide;
    8:          join (you, me),
    9:      connect (us,together),
   10: 
   11:  tell me.
   12: 
   13:  do something if distressed;
   14: 
   15:          @dawn, dance;
   16:          @evening, sing;
   17:          read (books,$poems,stories) until peaceful;
   18:          study if able;
   19: 
   20:          write me if-you-please;
   21: 
   22:  sort your feelings, reset goals, seek (friends, family, anyone);
   23: 
   24:              do*not*die (like this)
   25:              if sin abounds;
   26: 
   27:  keys (hidden), open (locks, doors), tell secrets;
   28:      do not, I-beg-you, close them, yet.
   29: 
   30:                                  accept (yourself, changes),
   31:                                  bind (grief, despair);
   32: 
   33:      require truth, goodness if-you-will, each moment;
   34: 
   35:  select (always), length(of-days)
   36: 
   37:  # listen (a Perl poem)
   38:  # Sharon Hopkins
   39:  # rev. June 19, 1995
 


Per favore, non mi chiedete cosa faccia questo script. Quello che conta è cosa dice qusto script.

     Buono studio!



Inizio Capitolo Indice