Programmare in Perl – Tipi di variabili
Nel corso base di programmazione si è parlato delle variabili, del loro utilizzo nella stesura di un software e dell’importanza della corretta in inizializzazione e dimensionamento. Il Perl, essendo un linguaggio interpretato, viene meno a questa importante caratteristica ma non è da ritenere un difetto in quanto è l’interprete stesso a dimensionare le variabili nel modo corretto, l’unica cosa che dobbiamo ricordarci è di evitare di assegnare alla stessa variabile tipi di dati diversi, per esempio una volta un intero e dopo un dato di tipo long, anche perchè ci incasineremo la vita da soli non sapendo più la variabile che cosa contiene di preciso.
Possiamo dire che in Perl esistono tre tipi di variabili:
- Scalar $ (Scalari come stringhe di testo, interi, numeri reali, ecc…)
- Array @ (Lista di elementi ordinata, vettore)
- Hash % (Array accessibili per chiavi)
Vediamo alcuni esempi:
1 2 3 | $totasini = 20; $moltiplicatore = 1.456; $nome = "Pippo"; |
Come si può notare una variabile di tipo scalar presenta il simbolo del $ come primo carattere del nome, per l’interprete Perl questo tipo di variabile è ad considerare una stringa, se assegnamo un valore numerico alla variabile creata verrà considerato una stringa o un numero a seconda del contesto in cui viene utilizzata la variabile nel programma. Questo non è affatto limitativo perchè da una grossa mano al programmatore che non deve ricorrere al casting fra tipi come avviene con altri linguaggi di programmazione, come il Java per esempio.
Vediamo ora gli array:
1 2 | @animali = (1,2,3,4); #inizializzo l'array $animali[3] = "gatto"; #assegnamo una stringa nella posizione 3 |
In questo esempio, prima definisco l’array e poi vado a inserire una stringa nella posizione 3 dell’elenco.
Per definire un array si deve porre il simbolo @ come primo carattere del nome scelto, mentre per assegnare un valore ad una posizione o recuperarlo si deve mettere il simbolo $ come se fosse una variabile scalare. Lavorare con gli array è molto semplice e soprattutto comodo.
Vediamo ora le hash che a differenza degli array permettono di dare un nome alle posizioni dell’elenco, di seguito un esempio:
1 2 3 | %frutta = ("tipo", "peso", "costo"); $frutta{frutta} = "mela"; $frutta{peso} = "1kg"; |
Come abbiamo visto nell’esempio un hash si definisce ponendo come primo carattere del nome il simbolo % e per inserire un valore si pone il $ come per le variabili scalari.
Ora proviamo un po’ a giocare con i tipi di dati e a fare qualche esempio da eseguire sul PC, aprite l’editor Perl Express che vi ho fatto installare all’inizio del corso e scrivete quanto di seguito:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/usr/bin/perl $animale = "cane"; $insetto = "ape"; $numbanane = 10; $nummele = 4; #------------------------------------------------------------- print ("Che animale ? " . $animale . "\n"); print ("Che insetto ? " . $insetto . "\n"); print ("Quante banane ? " . $numbanane . "\n"); print ("Quante mele ? " . $nummele . "\n"); #------------------------------------------------------------- print ("Somma frutta: " . ($numbanane + $nummele) . "\n"); print ("Il " . $animale . " rincorre un " . $insetto . "\n"); #------------------------------------------------------------- ($animale, $insetto) = ($insetto, $animale); print ("Che animale ? " . $animale . "\n"); print ("Che insetto ? " . $insetto . "\n"); |
Passiamo ora a spiegare lo script:
- La riga 1 è soltanto una direttiva che indica al sistema dove trovare l’interprete perl, è obbligatoria su sistemi Linux mentre in Windows se ne può fare a meno
- Le righe 2,3,4, e 5 non fanno altro che instanziare delle variabili scalari e assegnare un valore o una stringa. Si può anche non assegnare alcun valore iniziale ma sostengo sempre che sia una buona prassi da seguire per non lasciare delle variabili con contenuti non meglio definiti che, se richiamate nel codice dimenticandosi di assegnare un valore, potrebbero causare dei problemi. E’ meglio instanziarle con dei valori numeri come lo 0 o un stringa vuota (“”) per evitare bug non facili poi da trovare.
- Le righe 7,8,9 e 10 non fanno altro che stampare a monitor il contenuto delle variabili, comando print che vedremo meglio più avanti.
- La riga 12 stampa la somma delle due variabili numeriche mentre la 13 stampa il concatenamento delle due variabili che contengono le stringhe.
- La riga 15 fa una piccola magia che pochi linguaggi di programmazione, Perl è uno di questi, sono in grado di fare; scambiare il valore di due variabili senza passare attraverso un altra variabile.
- Le righe 16 e 17 stampano il risultato di quest’ultima operazione.
Per quanto riguarda l’argomento relativo agli array e alle hash, lo riprenderò più avanti in modo più completo perchè è un argomento complesso.
Per ora è tutto, alla prossima.




