# Perl/Variabili

Perl
Copertina Bibliografia Tutti i moduli · Sviluppo
    CopertinaPerl/Copertina
* IntroduzionePerl/Introduzione
* C'è Perl?Perl/C'è Perl?
* Primo programma: Ciao Mondo!Perl/Primo programma: Ciao Mondo!
** Primo programma in un filePerl/Primo programma in un file
* VariabiliPerl/Variabili
** Variabili scalariPerl/Variabili scalari
** Variabili vettoriPerl/Variabili vettori
** Variabili hashPerl/Variabili hash
* IstruzioniPerl/Istruzioni
** Istruzioni minimePerl/Istruzioni minime
** Istruzioni compostePerl/Istruzioni composte
** Istruzioni racchiuse o bloccoPerl/Istruzioni racchiuse o blocco
** Istruzioni etichettaPerl/Istruzioni etichetta
** Istruzioni particolari su blocchi o etichettePerl/Istruzioni particolari su blocchi o etichette
** Istruzioni decisionaliPerl/Istruzioni decisionali
** CicliPerl/Cicli
* Applicare la teoriaPerl/Applicare la teoria
* FunzioniPerl/Funzioni
* Funzioni Native sulle variabiliPerl/Funzioni Native sulle variabili
** Funzioni Native su scalariPerl/Funzioni Native su scalari
** Funzioni Native su vettoriPerl/Funzioni Native su vettori
** Funzioni Native su hashPerl/Funzioni Native su hash
* FilePerl/File
* Espressioni regolariPerl/Espressioni regolari
** Espressioni regolari (oltre)Perl/Espressioni regolari (oltre)
** Espressioni regolari (contesto)Perl/Espressioni regolari (contesto)
Modifica il sommario
Il Perl è un linguaggio estremamente flessibile. Questo è il suo pregio ed il suo difetto.
Riesce ad ottenere questo perché riesce a "leggere" il contesto nel quale viene utilizzata una variabile e si adatta. Questo meccanismo funziona nel 99.99% dei casi, ma occorre capire in base a quali elementi viene fatta una interpretazione oppure un'altra. NOTA: il problema è che pretendiamo che il Perl capisca quello che noi pensiamo e nel contesto di come lo pensiamo. Questo pur essendo quasi sempre vero ha dei limiti!
A differenza di altri linguaggi che identificano in modo preciso il tipo di informazione contenuta in una variabile (es. numero, carattere etc), a Perl interessa "solo" sapere come "gestirla". Cioè si disinteressa di cosa è contenuto fino al momento dell'utilizzo. Infatti al momento dell'utilizzo il Perl "guarda" il contesto ed usa la variabile "al meglio". Il contesto può essere di due tipi : scalare o lista. Per contesto scalare si intende un contesto in cui ci sia un solo valore : se assegno ad "a" il valore 5 ho un valore, quindi uno scalare. Per contesto lista si intende un contesto in cui ci siano più valori : se assegno ad "a" i valori 1, 2, 3, 4, e 5 ho più valori, quindi una lista.
Per non dover ricordare tutti i nomi di variabili a che tipo di dato corrispondano le variabili in Perl si distinguono in tre tipologie:
* le scalari :un solo dato
* i vettori (array in inglese) : un treno composto di vagoni costituiti dagli scalari
* gli hash : sono come i vettori ma ogni vagone ha un nome "proprio"
Con queste 3 tipologie di variabili è possibile creare programmi per le più diverse applicazioni.
Affinché l'interprete Perl possa capire quale tipologia di variabile sta trattando, la sintassi prevede tre tipi di simboli diversi (sigilli):
* "$" per le scalari
* "@" per i vettori (lista)
* "%" per gli hash (lista)
I sigilli vanno posti prima del nome della variabile.
Dato che sintatticamente le tipologie sono differenziate è possibile avere con lo stesso nome 3 variabili diverse. Per esempio se chiamiamo una variabile "a" sarà possibile avere:
* $a scalare
* @a array
* %a hash
senza che ci sia alcun scambio né ambiguità fra le diverse variabili.

## Riassunto

* Perl è un linguaggio che tiene presente del contesto nel quale una variabile viene utilizzata per usarla "secondo le intenzioni" del programmatore
* Ha tre tipi di variabili: scalari, array, hash
* Ogni tipo è identificato da un simbolo preciso $ (scalare), @ (array), % (hash)