# Perl/Funzioni Native su vettori

Perl
Copertina Bibliografia Tutti i moduli · Sviluppo
    CopertinaPerl/Copertina
* IntroduzionePerl/Introduzione
* C'è Perl?Perl/C'è Perl?
* Primo programma: Ciao Mondo!Perl/Primo programma: Ciao Mondo!
** Primo programma in un filePerl/Primo programma in un file
* VariabiliPerl/Variabili
** Variabili scalariPerl/Variabili scalari
** Variabili vettoriPerl/Variabili vettori
** Variabili hashPerl/Variabili hash
* IstruzioniPerl/Istruzioni
** Istruzioni minimePerl/Istruzioni minime
** Istruzioni compostePerl/Istruzioni composte
** Istruzioni racchiuse o bloccoPerl/Istruzioni racchiuse o blocco
** Istruzioni etichettaPerl/Istruzioni etichetta
** Istruzioni particolari su blocchi o etichettePerl/Istruzioni particolari su blocchi o etichette
** Istruzioni decisionaliPerl/Istruzioni decisionali
** CicliPerl/Cicli
* Applicare la teoriaPerl/Applicare la teoria
* FunzioniPerl/Funzioni
* Funzioni Native sulle variabiliPerl/Funzioni Native sulle variabili
** Funzioni Native su scalariPerl/Funzioni Native su scalari
** Funzioni Native su vettoriPerl/Funzioni Native su vettori
** Funzioni Native su hashPerl/Funzioni Native su hash
* FilePerl/File
* Espressioni regolariPerl/Espressioni regolari
** Espressioni regolari (oltre)Perl/Espressioni regolari (oltre)
** Espressioni regolari (contesto)Perl/Espressioni regolari (contesto)
Modifica il sommario

# Funzioni Native su vettori
## su vettori fisici
### pop

pop Toglie l'ultimo elemento di un vettore.Se usato senza argomenti utilizza :
* @ARGV nel caso si è nel corpo principale
* @_ nel caso di soubrutine
Sintassi:
* pop ARRAY
* pop
NOTA: se non ci sono elementi torna undef

### push

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

### 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 :
* @ARGV nel caso si è nel corpo principale
* @_ nel caso di soubrutine
Sintassi:
* shift ARRAY
* shift
NOTA: se non ci sono elementi torna undef

### 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:
* OFFSET stabilisce la posizione dove aggiungere/togliere (se negativo parte dal fondo). Se OFFSET è superiore al numero di elementi che compongono l'ARRAY, verranno aggiunti/rimossi a partire dal fondo (ma prima di questo viene mandato un messaggio di avviso)
* LENGTH indica quanti elementi togliere. Se LENGTH=0 non ne viene tolto 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)
* LIST sono gli elementi da aggiungere
In un contesto scalare ritorna :
* se aggiunge : undef.
* se toglie : l'ultimo elemento estratto.
In un contesto lista ritorna:
* se aggiunge : undef.
* se toglie : tutti gli elementi estratti.
Sintassi:
* splice ARRAY,OFFSET,LENGTH,LIST
* splice ARRAY,OFFSET,LENGTH
* splice ARRAY,OFFSET
* splice ARRAY

### unshift

unshift mette in ARRAY, a partire dall'inizio, LIST.
Sintassi:
* unshift ARRAY,LIST

## Funzioni per liste di dati
### grep

grep filtra 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:

### join

join ritorna una stringa composta da tutti gli elementi della lista "uniti" da STR
Sintassi:
* join STR, LIST

### 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
Sintassi:
* map BLOCK LIST
* map EXPR, LIST
Esempi:

### qw/STRING/

qw consente di ottenere un array da ogni elemento separato da spazio contenuto in una stringa.
Esempi:

### reverse

reverse ritorna gli elementi in ordine inverso
Sintassi:
* reverse LIST

### 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:

### unpack

unpack È l'azione contraria a pack. Si veda documentazione
Sintassi:
* unpack TEMPLATE,EXPR
* unpack TEMPLATE