Subroutines 1 : gestione degli array

Prima di iniziare a scrivere una subroutine (detta anche procedura o funzione) in Perl è necessario imparare a maneggiare in modo più efficiente gli array. A tal fine introduciamo 2 funzioni di estrazione dati ( shift e pop) e due funzioni di inserimento dati (unshift e push). Siccome l'uso di queste funzioni è comune a molti altri linguaggi di programmazione tralasciamo le spiegazioni teoriche e vediamo direttamente alcuni esempi di utilizzo.

Ad esempio, per estrarre dati da un array possiamo usare la funzione shift (estrae il primo dato dell'array) oppure la funzione pop (estrae l'ultimo dato dell'array):

my @array = ("a", "b", "c", "d", "e", "f") ;
print "\nLunghezza iniziale dell'array: ".@array."\n\n" ;
my $a = shift(@array) ;
my $b = shift @array  ;
print '$a = '.$a."\n" ;
print '$b = '.$b."\n" ;
print "\nLunghezza array dopo 2 shift: ".@array."\n\n" ;

oppure

my $f = pop(@array) ;
my $e = pop @array  ;
print '$f = '.$f."\n" ;
print '$e = '.$e."\n" ;
print "\nLunghezza array dopo 2 pop: ".@array."\n\n" ;

dove abbiamo utilizzato entrambe le sintassi (con parentesi e senza parentesi) per ricordare che in Perl le parentesi tonde possono essere omesse quando invochiamo una funzione.

Per inserire dati in un array possiamo usare la funzione unshift (inserisce il dato all'inizio dell'array) oppure la funzione push (estrae il dato in fondo all'array). Anche in questo caso usiamo entrambe le sintassi (con parentesi e senza parentesi).

my $size ;
$size = unshift(@array, "2") ;
$size = unshift @array, "1"  ;
print "\nContenuto array dopo 2 unshift: @array\n" ;
print "Lunghezza array dopo 2 unshift: ".$size."\n\n" ;

oppure

my $size ;
$size = push(@array, "5") ;
$size = push @array, "6"  ;
print "\nContenuto array dopo 2 push: @array\n" ;
print "Lunghezza array dopo 2 push: ".$size."\n\n" ;

Se dobbiamo inserire molti dati possiamo procedere con l'inserimento multiplo, che permette di inserire più elementi con un'unica operazione: gli elementi da inserire nell'array possono essere descritti come lista (tra parentesi tonde) oppure come un altro array:

# Esempi di inserimento multiplo
push(@array, (7, 8, 9, 10)) ;
print "\nContenuto array dopo inserimento multiplo: @array\n" ;

# Esempi di inserimento di array
push(@array, @array) ;
print "\nContenuto array dopo inserimento di array: @array\n" ;

Nella prossima lezione vedremo come utilizzare queste nozioni per gestire gli argomenti passati ad una subroutine.



Home Pagina 13 di 15