Hash

Le variabili hash rappresentano la classica struttura chiave-valore comune a molti linguaggi, come ad esempio gli array associativi (JavaScript e PHP) o le Hashtable (Java). Una variabile hash può essere inizializzata in modo diversi, ad esempio:

%romans_1 = (
  10 	=> "X",
  100 	=> "C",
  1000	=> "M",
) ;

oppure

%romans_2 = ( 10, "X",  100, "C",  1000, "M" ) ;

Ottenendo esattamente lo stesso risultato. La differenza riguarda solamente la leggibilità del codice. Possiamo verificarlo estraendo i valori contenuti nelle due hash: per farlo usiamo la sintassi $hash{chiave}, ovvero specifichiamo la chiave che vogliamo estrarre tra parentesi graffe.

print "Dieci in romano (1): $romans_1{10}\n" ;
print "Dieci in romano (2): $romans_2{10}\n" ;

In entrambi i casi verrà stampato il simbolo X (il numero 10 in romano).

Notiamo che quando facciamo riferimento ad un valore dell'hash, trattandosi di identificare un singolo scalare, usiamo il simbolo $ anziché il simbolo %. Inoltre, siccome Perl distingue tra i tipi di variabile visti finora (scalari, array ed hash) possiamo usare gli stessi identificativi per tipi di variabili diverse. In altre parole le variabili $a, @a e %a avranno in generale valori differenti.

Manipolazione degli hash

Anche gli hash, come gli array, possono essere manipolati molto facilmente. Consideriamo i seguenti esempi

@allkeys 	= keys %romans_1;
@allvalues 	= values %romans_1;
print "All keys: @allkeys\n" ;
print "All values: @allvalues\n" ;

che produce

All keys: 1000 10 100
All values: M X C

A differenza degli array gli hash non hanno alcun ordine interno, ovvero i loro elementi non sono ordinati in base agli indici. E' però possibile ordinarli se necessario, a seconda delle necessità. Esistono alcune strutture hash riservate, esattamente come nel caso degli scalari e degli array. Uno degli esempi più noti è la variabile %ENV, che contiene le variabili d'ambiente disponibili allo script.



Home Pagina 4 di 15