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.