Al fine di memorizzare le liste (introdotte nelle lezioni precedenti) per potervi fare facilmente riferimento durante l’esecuzione di un programma, Perl mette a disposizione un tipo di elemento specifico: l’
array (o vettore).
Una variabile di tipo array è specificata utilizzando come identificatore di tipo il simbolo
@ (at), mentre per quanto riguarda il nome della variabile valgono le stesse regole (ad esempio la differenza tra maiuscole e minuscole) viste a proposito delle variabili scalari. L’esempio seguente definisce delle variabili di tipo array tutte diverse tra di loro:
@My_Array;
@my_array;
@MY_ARRAY;
Si noti che è possibile utilizzare lo stesso nome per identificare sia una variabile scalare, sia una variabile di tipo array, in quanto Perl differenzia gli oggetti in base al loro identificatore di tipo:
$myVar; # variabile di tipo scalare
@myVar; # variabile di tipo array
La creazione di un array avviene semplicemente mediante inserimento degli elementi che lo compongono. A differenza di altri linguaggi di programmazione, Perl non richiede di specificare a priori la dimensione dell’array, ovvero il numero di elementi che esso conterrà; di conseguenza, è possibile far crescere indefinitamente un array tramite aggiunta di nuovi elementi a quelli esistenti. Ecco alcuni esempi di creazione di array:
@names = qw(Andrea Luigi Mario); # @names contiene i tre elementi specificati
@copyArr = @origArr; # l’array @copyArr conterrà una copia di tutti gli elementi dell’array @origArr
@emptyArr = (); # l’array @emptyArr non contiene elementi
Si osservi in particolare l’ultimo esempio: assegnare una lista vuota (o un array vuoto) a un array, ne cancella un eventuale contenuto precedente. Un array può anche essere definito mediante assegnazione di una lista, che contiene al suo interno altre liste o array; in questo caso, l’array risultante sarà dato dall’unione degli elementi di tutte le liste che lo compongono. L’esempio seguente:
@maschi = qw(Alberto Giorgio);
@femmine = qw(Chiara Giulia Roberta);
@alunni = (@maschi, @femmine);
@classe = (‘Maestra1’, ‘Maestra2’, @alunni);
equivale al seguente array:
@classe = qw(Maestra1 Maestra2 Alberto Giorgio Chiara Giulia Roberta);