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...