Perl/Funzioni Native su vettori

Wikibooks, manuali e libri di testo liberi.

Indice

[modifica] Funzioni Native su vettori

[modifica] su vettori fisici

[modifica] pop

pop Toglie l'ultimo elemento di un vettore.Se usato senza argomenti utilizza :

  1. @ARGV nel caso si è nel corpo principale
  2. @_ nel caso di soubrutine

Sintassi:

  • pop ARRAY
  • pop

NOTA: se non ci sono elementi torna undef


[modifica] push

push Aggiunge a ARRAY gli elementi di LIST, torna il numero di elementi complessivi

Sintassi:

  • push ARRAY,LIST


[modifica] shift

shift Ritorna il primo elemento di ARRAY in modo che, quello che prima era il secondo, ora è il primo. Se usato senza argomenti utilizza :

  1. @ARGV nel caso si è nel corpo principale
  2. @_ nel caso di soubrutine

Sintassi:

  • shift ARRAY
  • shift

NOTA: se non ci sono elementi torna undef

[modifica] splice

splice È una funzione che consente di aggiungere/togliere elementi da un ARRAY.Dato che può aggiungere o togliere uno o più elementi, occorre tenere presente che:

  1. OFFSET ne stabilisce la posizione dove aggiungere/togliere ( se negativo parte dal fondo ). Se OFFSET è oltre il numero di elementi che compongono ARRAY, verranno aggiunti/rimossi a partire dal fondo (ma prima viene mandato un messaggio di avviso)
  2. LENGTH indica quanti elementi togliere.se LENGTH=0 non ne toglie nessuno.

Se LENGTH è omesso rimuove tutti i valori:

  • se OFFSET è positivo da OFFSET fino alla fine dell ARRAY
  • se OFFSET è negativo, a partire dall'inizio fino a OFFSET ( quindi l'elemento che era alla posizione di OFFSET sarà il primo)
  1. LIST sono gli elementi da aggiungere

In un contesto scalare ritorna :

  1. se aggiunge : undef.
  2. se toglie : l'ultimo elemento estratto.

In un contesto lista ritorna:

  1. se aggiunge : undef.
  2. se toglie : tutti gli elementi estratti.

Sintassi:

  • splice ARRAY,OFFSET,LENGTH,LIST
  • splice ARRAY,OFFSET,LENGTH
  • splice ARRAY,OFFSET
  • splice ARRAY

[modifica] unshift

unshift Mette in ARRAY partire dall'inizio LIST.

Sintassi:

  • unshift ARRAY,LIST

[modifica] Funzioni per liste di dati

[modifica] grep

grep Filtra una gli elementi di una lista , tornando solo quelli che corrispondono all'elemento di selezione (BLOCK o EXPR)

Sintassi:

  • grep BLOCK LIST
  • grep EXPR, LIST

Esempi: <script lang="perl">

my @el = ( 1, 2, 3, 4, 5, a, b, c, d, e);
my @num0 = grep ( /\d/ , @el );  # @num0 contiene ( 1, 2, 3, 4, 5 )
# oppure ...
my @num1 = grep { /\d/ } @el ;   # @num1 contiene ( 1, 2, 3, 4, 5 )
my @let0 = grep ( /\w/ , @el );  # @let0 contiene ( a, b, c, d, e )
# oppure ...
my @let1 = grep { /\w/ } @el ;   # @let1 contiene ( a, b, c, d, e )

</script>

[modifica] join

join ritorna una stringa composta da tutti gli elementi della lista "uniti" da STR

Sintassi:

  • join STR, LIST

[modifica] map

map ritorna una lista ottenuta dal risultato di BLOCK o EXPR ai quali viene passato singolarmente ogni elemento di LIST. In BLOCK o EXPR l'elemento è nella variabile $_.

nota: BLOCK o EXPR possono tornare zero,uno,due o più elementi pertanto si possono avere più valori da un elemento della LIST

nota1: BLOCK o EXPR possono tornare zero,uno,due o più elementi pertanto si possono avere più valori da un elemento della LIST

Sintassi:

  • map BLOCK LIST
  • map EXPR, LIST

Esempi: <script lang="perl">

my @el = ( 1, 2, 3, 4, 5, a, b, c, d, e);
my @num0 = map ( ord , @el );  # @num0 contiene ( 49 , 50 , 51 , 52 , 53 , 97 , 98 , 99 , 100 , 101 )
# oppure ...
my @num1 = map { if ( $_ =~ /\d/) { $_; } else { ; } } @el ; # @num1 contiene ( 1, 2, 3, 4, 5 )

</script>


[modifica] qw/STRING/

qw consente di ottenere un array da ogni elemento separato da spazio in stringa.nota: interpola il valore presente in STRING

Esempi: <script lang="perl">

my @el = qw( 1 2 3 4 5 a b c d e); # contiene 1, 2, 3, 4, 5, a, b, c, d, e

</script>


[modifica] reverse

reverse ritorna gli elementi in ordine inverso

Sintassi:

  • reverse LIST

[modifica] sort

sort ordina gli elementi in forma alfanumerica (in base al codice ascii). Per l'ordinamento numerico vedi esempi

Sintassi:

  • sort SUBNAME LIST
  • sort BLOCK LIST
  • sort LIST

Esempi: Esempi: <script lang="perl">

my @el = qw( 1 2 3 4 5 a b c d e); # contiene 1, 2, 3, 4, 5, a, b, c, d, e
my @el_sort0 = sort @el ;  #        
   @el_sort0 = sort {$a cmp $b} @el ; # Stessa cosa di prima ma con BLOCK esplicito         
# ordinamento numerico ascendente
my @el_sort1 = sort {$a <=> $b} @el;
   
   # ordinamento numerico discendente
my @el_sort2 = sort {$b <=> $a} @el;

# ordinamento : 1 , a , 2 , b , 3 , c , 4 , d , 5 , e 
my @el_sort3 = sort { my %C = ( a => 1.001 
                              , b => 2.001
                              , c => 3.001
                              , d => 4.001
                              , e => 5.001 );
                      $Ca = $a; $Cb = $b;        
                      $Ca = $C{$a} if ( exists $C{$a} );
                      $Cb = $C{$b} if ( exists $C{$b} );
                      $Ca <=> $Cb;
                    } @el;

</script>


[modifica] unpack

unpack È l'azione contraria a pack. Si veda documentazione

Sintassi:

  • unpack TEMPLATE,EXPR
  • unpack TEMPLATE

Strumenti personali