Perl

Si trovano decine di guide al perl, ma molto spesso chi deve imparare un linguaggio di programmazione decide di non farlo perché vede che ci sono una marea di pagine. In questa guida cercherò di illustrare le cose fondamentali del Perl.

Cos’è il Perl?

Innanzitutto cominciamo col dire che il Perl è un linguaggio di scripting molto potente, permette di eseguire operazioni con poche istruzioni che in un altro linguaggio sarebbero state molto più complicate da scrivere.
Di cosa abbiamo bisogno per lanciare uno script?
Abbiamo bisogno di un interprete Perl come Active Perl;
Poi logicamente abbiamo bisogno dello script, in formato .pl;
Per lanciarlo basta aprire il Terminale/Prompt e con il comando cd ci spostiamo nel percorso dello script. A questo punto digitiamo perl nomescript.pl
Simboli che troveremo nel perl: IN AGGIORNAMENTO
– $ per introdurre una variabile
– \n per andare a capo
– # Se la riga di codice comincia con #, non sarà eseguita (non confondetevi con #!/usr/local/bin/perl che serve per indicare la posizione di Perl
– @ per introdurre un array
– & per introdurre una subroutine

Il primo script in Perl

Cominciamo da un algoritmo semplice:
Assegna ad a la sequenza di caratteri: “Luigi”;
Stampa “Il mio nome è: ” e il valore di a
Il codice sarà:

#!/usr/local/bin/perl
$a = "Luigi";
print "Il mio nome è $a\n";

Alla fine del codice ho messo \n, serve per andare a capo.
Prima di complicare il codice devo introdurre i canali standard di comunicazione, cioè:
<STDIN> è il canale di Input (STanDardINput)
<STDOUT> è il canale di Output (STanDardOUTput)
<STDERR> è il canale che serve per visualizzare gli errori nel Terminale.

Detto questo vediamo come interagire con questi ultimi.
Facciamo in modo che il valore della variabile $a lo dobbiamo decidere noi, useremo quindi il canale di input:

#!/usr/local/bin/perl
$a = <STDIN>;
print "Il mio nome è $a\n";

Vedremo successivamente come utilizzare gli altri due.

Adesso introduciamo due nuove variabili, le chiameremo $b e $totale, che fantasia. Facciamo in modo che $totale sommi il valore di $a, al valore di $b.

#!/usr/local/bin/perl
$a = <STDIN>;
$b = <STDIN>;
$totale = $a+$b;
print "$totale\n"

Si può modificare il codice sostituendo il + con – o / o*
Ad esempio:

#!/usr/local/bin/perl
$a = <STDIN>;
$b = <STDIN>;
$totale = $a-$b;
print "$totale\n"

E così via.

Gli array

Abbiamo visto le variabili, che si identificano dal simbolo $. Prima di parlare degli array c’è da dire che una variabile, può contenere una stringa, un valore o un numero. Un array può contenere più stringe, piu valori, più numeri. Ad esempio, facciamo che vogliamo creare una variabile per ogni nome.

$1 = "Pincopallino";
$2 = "Giacomino";
$3 = "Gesu";

Usando gli array diventa:

@nomi = ('Pincopallino', 'Giacomino', 'Gesu');

Se voglio richiamare Pincopallino, farò così:

print $nomi[0]

Se voglio richiamare Se voglio richiamare Giacomino, farò così:

print $nomi[1]

Da tener presente che gli array si contano partendo da 0.
Argomenti su riga di comando
Riprendiamo l’esempio di prima e facciamo in modo che le variabili vengano specificate direttamente nella linea di comando quando lanciamo lo script. (es. perl asd.pl 10 20):

#!/usr/local/bin/perl
$a = $ARGV[0];
$b = $ARGV[1];
$totale = $a-$b;
print "$totale\n"

If-Elsif-Else

Vediamo come creare una condizione. Mettiamo il caso e la condizione sia questa:
Se $a è uguale a ‘test’ stampa Hai inserito la parola giusta
Oppure stampa Non hai inserito la parola giusta

if ($a eq "test") {
print "Hai inserito la parola giusta\n";
} else {
print "Non hai inserito la parola giusta\n";
}

Adesso riformuliamola condizione:
Se $a è uguale a ‘test’ stampa Hai inserito la parola giusta
Se $b è uguale a ‘test2’ stampa Hai inserito la seconda parola giusta
Oppure stampa Non hai inserito la parola giusta

if ($a eq "test") {
print "Hai inserito la parola giusta\n";
} elsif {
print "Non hai inserito la parola giusta\n";
} else {
print "Non hai inserito la parola giusta\n";
}

Alcune regole:
In una condizione può esserci un solo if;
In una condizione possono esserci infiniti elsif;
In una condizione può esserci un solo else;

Ecco gli operatori:

$a == $b uguaglianza vero se $a è uguale a $b
$a < $b minore di vero se $a è minore di $b
$a <= $b minore o uguale vero se $a è minore o uguale a $b
$a > $b maggiore vero se $a è maggiore di $b
$a >= $b maggiore o uguale vero se $a è maggiore o uguale a $b
$a != $b diverso vero se $a è diverso da $
$a eq $b uguaglianza vero se $a è uguale a $b
$a lt $b minore di vero se $a è minore di $b (ordine alfabetico)
$a le $b minore o uguale vero se $a è minore o uguale a $b (ordine alfabetico)
$a gt $b maggiore vero se $a è maggiore di $b (ordine alfabetico)
$a ge $b maggiore o uguale vero se $a è maggiore o uguale a $b (ordine alfabetico)
$a ne $b diverso vero se $a è diverso da $b
-r $a leggibile vero se il file $a è leggibile
-w $a scrivibile vero se è possibile scrivere sul file $a
-d $a directory vero se $a è una directory
-f $a file regolare vero se $a è un file regolare (non un device o altro)
-T $a file di testo vero se $a è un file di testo
-e $a esiste vero se il file $a esiste

Legenda:
Operatori di confronto tra numeri
Operatori di confronto tra stringhe
Operatori su file

I cicli

I cicli consentono di ripetere determinati comportamenti, si ripetono dei comandi per un determinato numero di volte.
Ecco un esempio di codice del ciclo for

#!/usr/local/bin/perl

@nomi = (“Pincopallino”, “Giacomino”, “Gesu”);

for ($i=0; $i<=$#nomi; $i++)
{
print “$nomi[$i]\n”;
}

In questo modo, ad ogni ciclo, verra stampato un elemento.

$i=0 è il valore di inizio del ciclo.
$i<=$#nomi indica l’ultimo valore dell’array.
$i++ Serve per aumentare il valore d’inizio del ciclo.

Il ciclo foreach

Il ciclo foreach prende tutti gli elementi di un array, li sposta in una variabile stampa la variabile a schermo:

#!/usr/local/bin/perl

@nomi = (“Pincopallino”, “Giacomino”, “Gesu”);
foreach $nomignoli (@nomi)
{
print “$nomignoli\n”;
}

Il ciclo while

il ciclo while consente di ciclare un blocco di istruzioni fino a quando una condizione risulta vera, quando restituisce false il ciclo si bloccherebbe.

#!/usr/local/bin/perl

@nomi = (“Pincopallino”, “Giacomino”, “Gesu”);
while (@nomi)
{
$nomignoli = shift @nomi;
print “$nomignoli\n”;
}

Le subroutine

Le subroutine non sono altro che un insieme di istruzioni che vengono inserite in qualsiasi parte del codice. Infatti quando l’interprete perl trova un richiamo alla subroutine, va alla ricerca della subroutine per tutto il codice. In genere però le funzioni delle subroutines si specificano tutte alla fine, per una maggiore comprensione. Andiamo a vedere come è composta una subroutine:

sub Nomesub {
qui tutte istruzioni della sub
}

Per richiamare una subroutine si usa: &nomesub()

——————————————————————-
Bene la guida sulle funzioni di base del perl è finita. Consiglio, per chi volesse approfondire di leggere queste due guide: Guida1Guida2