Il PERL

Cos'è il PERL?

Un altro linguaggio di scripting, acronimo di Practical Extration Report Language. Se non è già installato, il programma è PERL.EXE, basta cercare con Google "scaricare activeperl" e troverete il programma desiderato.

Il PERL

Facendo doppio clic sul file verranno eseguiti i comandi all'interno.

 

Noteremo che appena ha finito di eseguire tutti i comandi chiude la finestra del prompt. Solo più avanti scopriremo come fare.

 

Il comando PRINT

  

Scrive il testo specificato. Esempio:

 

print "Il bimbo dice \"Ciao\"\n";

 

Le virgolette sono precedute da uno slash perchè altrimenti vengono eseguite come deliminatori. La stessa cosa da fare con le virgolette singole.

\n serve per andare a capo.

 

Inoltre il punto (.) unisce due stringhe, in seguito vedremo che unisce anche due variabili, una stringa e una variabile o viceversa:

 

print "Ciao "."bello\n";

 

La X ripete il numero di volte specificato il testo:

 

print "Ciao\n"x(5);

 

 

Il comando SLEEP

 

Blocca lo script per il numero di secondi specificato, se non è specificato il numero blocca lo script per un tempo indeterminato:

 

SLEEP n;

 

Esempio:

 

print "Ciao Rega\n";

sleep;

 

Blocca lo script per far visualizzare il messaggio.

 

NB: Blocca lo script prima di eseguire i comandi della riga in cui è situato, quindi se non è specificato \n blocca lo script prima di eseguire il comando PRINT.

 

 

Inserire commento

 

Per inserire un commento scrivere:

 

# commento

 

Esempio:

 

# Questo è un file PERL

print "Ciao\n";

# Visualizza "Ciao" e va a capo

sleep;

# Blocca lo script

 

 

Definire variabili

  

Per definire una variabile scrivere:

 

$variabile = valore;

 

Esempio:

 

$a = "Ciao";

print $a."\n";

sleep; 

 

NB: Non è necessario andare a capo, ma è necessario mettere il punto e virgola (;):

 

$a = "Ciao";  print $a."\n"; sleep; 

 

 

Definire array

 

Un array è un insieme ordinato di elementi. Per definire un array scrivere:

 

@array = ("valore1", "valore2", "valore3");

 

Per estrarre un valore di un array scrivere:

 

$array[n]

 

n specifica quale valore usare, se viene specificato 0 viene estratto il primo, se viene specificato 1 il secondo e così via.

 

Per inserire un nuovo valore ad un array già definito scrivere:

 

PUSH(@array, ("valore4", "valore5"));

 

Per eliminare l'ultimo valore dell'array usare POP, contrario di PUSH:

 

POP(@array);

 

Per aggiungere un valore all'inizio di un array si usa UNSHIFT:

 

UNSHIFT(@array, ("valore 0"));

 

Per eliminare il primo valore di un array si usa SHIFT, contrario di UNSHIFT:

 

SHIFT(@array);

 

I nuovi valori verranno aggiunti dopo i valori precedentemente definiti.

 

Esempio:

 

@denti = ("incisivi", "canini", "premolari", "molari");

print $denti[0]."\n"; # Scrive "incisivi"

print $denti[2]."\n"; # Scrive "premolari"

push(@denti, ("del giudizio"));

print $denti[4]."\n"; # Scrive "del giudizio"

sleep;

 

 

Definire un array associativo

 

Questo tipo di array associa ad una parola un numero, in questo modo:

 

%array_assoc = (

    "stringa1", 1,

    "stringa2", 2

);

 

Per espandere il numero scrivere:

 

$array_assoc{"stringa1"}

 

Esempio:

 

%num = (

"zero", 0,

"uno", 1,

"due", 2,

"tre", 3,

"quattro", 4,

"cinque", 5,

"sei", 6,

"sette", 7,

"otto", 8,

"nove", 9

);

print $num{"uno"}.$num{"otto"}."\n"; # Scrive "18"

sleep;

 

Operatori

 

Gli operatori più comuni sono:

 

+                         Più.

-                          Meno.

                         Diviso.

*                          Per.

**                        Potenza.

%                        Divisione (espande solo il resto fra il dividendo e il divisore).

++$var               Incremento di 1 della variabile.

$var++                         "           "           "          "

--$var                 Decremento di 1 della variabile.

$var--                           "           "           "          "

$var += $var2   Incremento di $var2 della variabile.

$var -= $var2    Decremento di $var2 della variabile.

 

Esempio:

 

print "3 alla seconda = ".(3 ** 2)."\n\n";

print "3 per 2 = ".(3 * 2)."\n\n";

$a = 3;

print "3 meno 1 = ".(--$a)."\n";

sleep;

 

 

I comandi IF, ELSIF ed ELSE

 

$a = 5;

$b = 7;

if ($a * $b == 35 && $a < $b) {

    $c = $a * $b;

    print $c."\n";

} elsif ($a == 2 || $a != $b) {

    print $b."\n";

} elsif (!($a == $b)) {

    print $a."\n";

} else {

    print "Ciao!\n";

}

sleep;

 

Spero che non ci sia più bisogno di spiegare come funzionano questi tre comandi:

 

IF serve per eseguire un comando nel caso la condizione o le condizioni specificate siano soddisfatte.

ELSIF, nel caso le codizioni precedenti non siano soddisfatte esegue un comando nel caso la condizione o le condizioni di ELSIF siano soddisfatte.

Infine, ELSE esegue un comando nel caso tutte le condizioni precedenti non siano soddisfatte.

 

Ora però notiamo qualcos'altro:

 

&& unisce due condizioni, entrambe le condizioni devono essere soddisfatte.

 

|| unisce sempre due condizioni, ma basta che una delle due condizioni sia soddisfatta.

 

! all'inizio di una condizione, esegue il comando specificato nel caso la condizione non sia soddisfatta, tipo NOT nel DOS.

 

Per non fare confusione suggerisco di chiudere in una parentesi tonda una ed una sola condizione, mettendo all'esterno le "congiunzioni":

 

$a = 5;

$b = 3;

$c = 1;

if ((($a > $b) || (($a == 4) || ($c == 100))) && (!($c > $a))) {

    print "Bingo!\n";

}

sleep;

 

Ci sono poi gli operatori per le condizioni:

 

==   Uguale a;

!=    Diverso da;

<     Minore di;

<=   Minore o uguale a;

>     Maggiore di;

>=   Maggiore o uguale a.

 

Ma ad esempio che significa:

 

if ($a) {

    print "Il valore di a è ".$a."\n";

} else {

    print "La variabile a non esiste\n";

}

sleep;

 

Senza alcun confronto (cioè solo con il nome di una variabile) esegue il comando nel caso la variabile sia definita con un valore positivo diverso da 0.

 

Fino ad adesso abbiamo fatto solo confronti numerici, ma si possono fare confronti fra delle stringhe, per esempio:

 

$a = "Ciao";

$b = "ciccione!";

if ($a ne $b) {

    print $a." ".$b."\n";

}

sleep;

 

Gli operatori in tal caso cambiano:

 

EQ    Uguale a;

NE    Diverso da;

LT     Minore di;

LE     Minore o uguale a;

GT     Maggiore di;

GE    Maggiore o uguale a.

 

Anche qui, senza alcun confronto esegue il comando nel caso la variabile sia definita con una stringa contenente almeno un carattere.

 

 

Come far inserire un dato dall'utente

 

E' molto semplice, basta fare così:

 

$variabile = <STDIN>;

 

Verrà fermato lo script per far inserire all'utente una stringa che verrà assegnata alla variabile specificata.

 

Esempio:

 

print "Come ti chiami? ";

$a = <stdin>;

print "\nCiao ".$a."!\n\nPremi Invio per uscire . . . ";

$b = <stdin>;

 

 

Il comando WHILE

 

Ripete i comandi specificati se la condizione è vera.

 

WHILE (condizione) {

    comandi

}

 

Esempio:

 

$str = "Quanto fa 2 + 2? ";

print $str;

$a = <stdin>;

while ($a != 4) {

    print "\nSbagliato. Riprova.\n\n";

    print $str;

    $a = <stdin>;

}

print "\nEsatto!\n\nPremi Invio per uscire . . . ";

$b = <stdin>;

 

 

Il comando FOR

 

Ripete i comandi specificati se la condizione finale è vera. Capiamo meglio con un esempio.

 

FOR (condizione iniziale; condizione finale; incremento) {

    comandi

}

 

La condizione iniziale è un assegnazione. La condizione finale è una condizione che se diventa falsa finisce il ciclo. L'incremento è solitamente una modifica alla condizione iniziale che permette di arrivare alla condizione finale.

 

Dopo aver eseguito i comandi, se la condizione finale è soddisfatta, li ripete, al contrario se la condizione finale non sia soddisfatta esce dal ciclo.

 

Esempio:

 

for ($a = 0; $a <= 10; $a++) {

    print "La variabile a equivale a ".$a."\n\n";

}

print "Ciclo finito. Premi Invio per continuare . . . ";

$b = <stdin>;

 

 

Andate nella sezione Commenti se non avete capito qualcosa o se volete aggiungere qualcosa a quanto ho scritto o altro...