Moduli e librerie
Uno dei principali vantaggi offerti da Perl consiste nella vasta disponibilità di moduli e librerie disponibili sul Web. Il punto di riferimento ufficiale è CPAN. Ogni volta che dobbiamo affrontare un problema (dalla connessione al database alla grafica 3D) possiamo provare a cercare su CPAN: in molti casi troveremo delle soluzioni già pronte e collaudate, che potremo sfruttare come punto di partenza del nostro lavoro.
L'installazione e configurazione dei moduli Perl esula dalle finalità di questo tutorial. In particolare la procedura di installazione dei moduli dipende fortemente dal sistema operativo e dalla versione di Perl. Le modalità di installazione di un nuovo modulo su Linux sono in generale molto diverse dalla procedura di installazione dello stesso modulo su Windows o MAC OS. Per questo motivo di seguito ci limiteremo a mostrare un esempio di utilizzo di un modulo, assumendo che esso sia già installato.
Se lavoriamo con ActivePerl su Windows la gestione dei moduli Perl può essere delegata al Perl Package Manager (in breve: ppm), un utility che viene installata assieme ad ActivePerl: ppm può essere lanciato sia dal menù Programmi sia a linea di comando, digitando ppm
. L'aggiunta di nuovi moduli su ppm potrebbe risultare problematica: per questo motivo qui sotto usiamo come esempio un modulo che dovrebbe essere già disponibile con l'installazione di ActivePerl: si tratta dal modulo Text::CSV_XS, nato allo scopo di semplificare la gestione dei file CSV.
Per dettagli e informazioni sul modulo Text::CSV_XS
rimandiamo come sempre a
CPAN.
Per dichiarare l'intenzione di usare un modulo scriviamo use
seguito dal nome del modulo. Siccome in questo caso vogliamo usare il modulo Text::CSV_XS
scriviamo:
# Dichiarazione del modulo Text::CSV_XS use Text::CSV_XS ;
per utilizzare il modulo dobbiamo necessariamente leggere la documentazione, allo scopo di identificare le API (Application Programming Interface) che ci interessano e le modalità di utilizzo. Ad esempio, nel caso del modulo Text::CSV_XS
, la documentazione ci dice che dobbiamo creare un oggetto tramite l'istruzione
my $csvObject = Text::CSV_XS->new() ;
dove il nome (o meglio l'identificatore) dell'oggetto, in questo caso csvObject
, è del tutto arbitrario. Possiamo scegliere il nome che più ci piace, a patto di rimanere coerenti con la nostra scelta. A questo punto siamo pronti ad invocare i metodi dell'oggetto, accedendo così alle funzioni esposte dal modulo. Vediamo un esempio concreto, supponendo di leggere dal file system un file CSV di nome prova.csv
, contenente le seguenti righe:
Prima riga A Seconda riga A, Seconda riga B Terza riga A, Terza riga B, Terza riga C Quarta riga A, Quarta riga B, Quarta riga C, Quarta riga D àèìòù
un esempio di codice che legge il file CSV sfruttando il modulo Text::CSV_XS
potrebbe essere
# Apertura del file: vedi lezione 10 my $file = "prova.csv" ; open(my $data, '<', $file) or die "File non trovato: $file\n" ; # Lettura del contenuto CSV my $n = 0 ; while (my $row = <$data>) { chomp $row ; if ($csvObject->parse($row)) { $n++ ; my @columns = $csvObject->fields() ; print "$n -> @columns (array di ".@columns." elementi)\n" ; } else { warn "Errore nella riga: $row\n" ; } } # End of while
tutte le chiamate al modulo Text::CSV_XS
sono riconoscibili dall'invocazione di un metodo sull'oggetto
$csvObject
, come ad esempio $csvObject->fields()
, che invoca il metodo (o funzione) fields()
del modulo. Questo modo di lavorare dovrebbe risultare familiare a chi conosce il paradigma OOP
(Object Oriented Programming): se non conosciamo la programmazione ad oggetti possiamo pensare all'oggetto $csvObject
come una specie di "driver" che consente l'accesso alle "funzioni" della libreria.
Eseguendo lo script qui sopra otteniamo
1 -> Prima riga A (array di 1 elementi) 2 -> Seconda riga A Seconda riga B (array di 2 elementi) 3 -> Terza riga A Terza riga B Terza riga C (array di 3 elementi) 4 -> Quarta riga A Quarta riga B Quarta riga C Quarta riga D (array di 4 elementi) Errore nella riga: àèìòù
Alcune note:
print
, come spiegato qui.warn
.Conclusioni
Con questa lezione concludiamo la nostra introduzione a Perl. Come promesso all'inizio del corso ci siamo limitati a spiegare la sintassi e le principali keyword del linguaggio, senza scendere troppo nei dettagli. Per lavorare con Perl in modo professionale dobbiamo obbligatoriamente approfondire la conoscenza dello strumento. Se vogliamo capire meglio il paradigma OOP nell'ambito Perl possiamo iniziare a leggere
qui oppure
qui.
Per ulteriori informazioni sulle modalità di installazione possiamo consultare questa
guida.
Per informazioni sui moduli disponibili possiamo leggere
qui,
mentre per i moduli già installati con Perl possiamo guardare
qui.
Ovviamente, per ogni evenienza possiamo sempre provare a ricorrere all'elenco delle
FAQ.
Buon Perl a tutti!
Download
Qui sotto è possibile scaricare tutti i sorgenti utilizzati durante il tutorial
Tutorial 1.0.1