Array

A differenza delle variabili scalari, gli array sono identificati dal prefisso @, ad esempio @array. Come nella maggior parte dei linguaggi gli array sono 0-indexed (cioè indicizzati a partire da zero). Il singolo elemento di un array (essendo di fatto uno scalare) viene identificato scrivendo $array[$n].
Un esempio di definizione di array è il seguente:

@array = ("a", "b", "c", 42, $a) ;

Dove il simbolo $a rappresenta una variabile scalare definita predentemente.
Perl permette di manipolare gli array molto facilmente. Consideriamo ad esempio il seguente script:

@short = @array[0, 3] ;
print "New array: [$short[0], $short[1]]" ;

che estrae gli elementi di posto 0 (primo elemento) e 3 (quarto elemento) e poi li stampa. Il risultato è infatti

New array: [a, 42]

Per concatenare due array possiamo usare la sintassi

@long = (@array, @short) ;

Verifichiamo l'esito dell'operazione stampando il contenuto dell'array risultato

print "\nContenuti dell'array 'long': " ;
for $num (@long) {
	print "$num - " ;
}

Che produce

Contenuti dell'array 'long': a - b - c - 42 -  - a - 42 -

Se eseguiamo le istruzioni di questa pagina senza valorizzare la variabile $a troveremo degli "spazi vuoti" quando stampiamo il contenuto dell'array (come qui sopra): questo perché, come già detto in precedenza, la variabili non definite sono trattate come il numero 0 (zero) o la stringa vuota.

Nota: abbiamo anticipato la sintassi del ciclo for, che vedremo meglio nelle prossime lezioni.

Manipolare gli array

Vediamo alcuni esempi di manipolazione degli array. Oltre alle operazioni di estrazione e concatenazione viste sopra possiamo eseguire alcune operazioni in modo molto semplice e sintetico

@chars 		= @array[0..2] ;
@sorted 	= sort @array ;
@reversed 	= reverse @array ;
print "Chars: @chars\n" ;
print "Sorted: @sorted\n" ;
print "Reversed: @reversed\n" ;

il risultato sarà il seguente

Chars: a b c
Sorted:  42 a b c
Reversed:  42 c b a

Ancora una volta notiamo la presenza di uno spazio vuoto supplementare (prima del 42), dovuto alla variabile $a non valorizzata.

Concludiamo elencando alcune sintassi e proprietà degli array:

  • Gli array vuoti o non definiti (come le variabili non definite) hanno lunghezza -1
  • Anche gli array vengono interpolati (cioè interpretati) se inseriti tra doppi apici (esempio: print "@array")
  • Per evitare un'interpolazione non desiderata possiamo usare la escape notation (esempio: \@)
  • Come per gli scalari, anche per gli array esistono alcuni idenitificativi riservati. Alcuni esempi sono @ARGV (argomenti passati a linea di comando) e @_ (argomenti passati ad una subroutine)


Home Pagina 3 di 15