[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 548.   Perl: funzioni interne

Nelle sezioni seguenti viene descritto brevemente il funzionamento di alcune funzioni interne di Perl. La sintassi viene mostrata secondo lo stile della documentazione di Perl, per cui, blocco rappresenta un gruppo di istruzioni nella forma consueta di Perl, e lista rappresenta un elenco di espressioni separate da virgole.

blocco equivale a:

{ istruzione... }

lista equivale a:

espressione1, espressione2, ...

Le funzioni descritte sono raggruppate in base al tipo di situazione in cui vengono utilizzate normalmente.

548.1   File

Vengono qui descritte alcune funzioni che riguardano la gestione dei file, nel senso globale, esterno. Le funzioni per la gestione del contenuto dei file vengono mostrate più avanti.

Tabella 548.1. Funzioni Perl per la gestione esterna dei file.

Funzione Descrizione
-x nome_file
-x flusso
Perl permette di effettuare una serie di test sui file in modo analogo a quanto si fa con le shell tradizionali. Nel primo caso si fa riferimento a un file indicato per nome, nel secondo il riferimento è a un flusso di file. La lettera x cambia a seconda del tipo di test da verificare. I vari test restituiscono il valore uno se si verificano, oppure la stringa nulla in caso contrario (salvo eccezioni, come mostrato successivamente). Le descrizioni successive mostrano i vari tipi di test.
-r nome
Il file è accessibile in lettura dal numero UID/GID efficace.
-w nome
Il file è accessibile in scrittura dal numero UID/GID efficace.
-x nome
Il file è accessibile in esecuzione dal numero UID/GID efficace.
-o nome
Il file appartiene al numero UID efficace.
-R nome
Il file è accessibile in lettura dal numero UID/GID reale.
-W nome
Il file è accessibile in scrittura dal numero UID/GID reale.
-X nome
Il file è accessibile in esecuzione dal numero UID/GID reale.
-O nome
Il file appartiene al numero UID reale.
-e nome
Il file esiste.
-z nome
Il file ha dimensione zero.
-s nome
Il file ha una dimensione maggiore di zero (restituisce la dimensione).
-f nome
Si tratta di un file normale.
-d nome
Si tratta di una directory.
-l nome
Si tratta di un collegamento simbolico.
-p nome
Si tratta di un file FIFO (pipe con nome).
-S nome
Si tratta di un socket.
-b nome
Si tratta di file di dispositivo a blocchi.
-c nome
Si tratta di file di dispositivo a caratteri.
-t nome
Si tratta di un flusso di file aperto su un terminale.
-u nome
Il file ha il bit SUID attivo.
-g nome
Il file ha il bit SGID attivo.
-k nome
Il file ha il bit Sticky attivo.
-T nome
Si tratta di un file di testo.
-B nome
Si tratta di un file binario.
-M nome
Restituisce quanto tempo ha il file in base alla data di modifica.
-A nome
Restituisce quanto tempo ha il file in base alla data di accesso.
-C nome
Restituisce quanto tempo ha il file in base alla data di creazione.
chmod permessi, file, ...
chmod() cambia i permessi dei file indicati come argomento. In particolare, l'argomento è una lista, in cui il primo elemento è costituito dai permessi espressi in forma numerica ottale. Dal momento che si tratta di un numero ottale, è bene che non sia fornito in forma di stringa perché la conversione da stringa a numero ottale non è automatica. Restituisce il numero di file su cui ha potuto intervenire con successo.
chown uid, gid, file, ...
chown() cambia i permessi dei file indicati nella lista di argomenti. I primi due elementi della lista sono rispettivamente il numero UID e GID. Gli elementi restanti sono i file su cui si vuole intervenire. Restituisce il numero di file su cui ha potuto intervenire con successo.
link file_di_origine,\
  \collegamento_di_destinazione
link() genera un collegamento fisico a partire da un file esistente. Restituisce Vero se la creazione ha successo.
lstat file
lstat flusso
lstat() funziona esattamente come stat(), con la differenza che restituisce le informazioni relative a un collegamento simbolico, invece di quelle del file a cui questo punta. Se non viene indicato l'argomento, lstat() utilizza il contenuto della variabile predefinite $_.
readlink file
readlink() restituisce il valore di un collegamento simbolico. Se non viene indicato l'argomento, readlink() utilizza il contenuto della variabile predefinita $_.
rename nome_vecchio,nome_nuovo
rename() cambia il nome di un file, o lo sposta. Tuttavia, lo spostamento non può avvenire al di fuori del file system di partenza. Restituisce uno se l'operazione riesce, altrimenti zero.
stat file
stat flusso
stat() restituisce un array di tredici elementi contenenti tutte le informazioni sul file indicato per nome o attraverso un flusso di file. Se non viene indicato l'argomento, stat() utilizza il contenuto della variabile predefinita $_.
Gli elementi dell'array restituito sono riportati nella tabella 548.2 in cui appare anche il nome suggerito per la trasformazione in variabili scalari.
Va osservato che le informazioni data-orario sui file sono espresse in forma numerica che esprime il tempo trascorso a partire dalla data di riferimento del sistema operativo. Nel caso dei sistemi derivati da Unix si tratta dell'ora zero del 1/1/1970. Nello stesso modo, è evidente che tutte queste informazioni possono essere ottenute solo da un file system che può gestirle.
symlink file_di_origine,\
  \collegamento_di_destinazione
symlink() genera un collegamento simbolico a partire da un file esistente. Restituisce Vero se la creazione ha successo.
unlink lista_di_file
unlink() cancella i file indicati per nome tra gli argomenti. Generalmente non possono essere cancellate le directory (e comunque sarebbe inopportuno dato il tipo di cancellazione che si fa). Restituisce il numero di file cancellati con successo. Se non viene indicato l'argomento, unlink() utilizza il contenuto della variabile predefinita $_.
utime data_di_accesso,\
  \data_di_modifica,lista_di_file
utime() cambia la data di modifica e di accesso di una serie di file. Le date, indicate come argomenti iniziali, sono espresse nella forma numerica gestita dal sistema operativo. La data di modifica dell'inode viene cambiata automaticamente in modo che corrisponda al momento in cui questa modifica viene effettuata.

Tabella 548.2. Elenco degli elementi componenti l'array restituito da stat().

Elemento Nome consueto Descrizione.
0
$dev
Numero del dispositivo del file system.
1
$ino
Numero dell'inode.
2
$mode
Permessi del file.
3
$nlink
Numero di collegamenti fisici al file.
4
$uid
UID dell'utente proprietario del file.
5
$gid
GID del gruppo proprietario del file.
6
$rdev
Identificatore di dispositivo, per i file speciali.
7
$size
Dimensione in byte.
8
$atime
Data dell'ultimo accesso.
9
$mtime
Data dell'ultima modifica.
10
$ctime
Data di cambiamento di inode.
11
$blksize
Dimensione preferita dei blocchi per le operazioni di I/O del sistema.
12
$blocks
Numero di blocchi allocati attualmente.

Segue la descrizione di alcuni esempi.

548.2   Directory

Vengono qui elencate alcune funzioni che riguardano la gestione delle directory e di raggruppamenti di file. Vengono ignorate volutamente le funzioni specifiche di Perl per la lettura delle directory.

Tabella 548.12. Funzioni Perl per la gestione delle directory e dei raggruppamenti di file.

Funzione Descrizione
chdir directory
chdir() cambia la directory di lavoro posizionandosi in corrispondenza di quanto indicato come argomento. Se l'argomento viene omesso, lo spostamento avviene nella directory personale, attraverso quanto determinato dal contenuto di $ENV{"HOME"}. Restituisce Vero se l'operazione ha successo, Falso in tutti gli altri casi.
glob espressione
glob() restituisce quanto indicato nell'argomento dopo un'operazione di espansione, come farebbe una shell. Se l'argomento non viene indicato, l'espansione viene effettuata sul contenuto della variabile $_.
mkdir directory, permessi
mkdir() crea la directory indicata come primo argomento. I permessi della directory sono indicati come secondo argomento, devono essere espressi con un numero ottale, tenendo conto che poi vengono filtrati ulteriormente dalla maschera dei permessi. Restituisce uno se l'operazione riesce, altrimenti zero, impostando anche la variabile $!.
In generale, non dovrebbe essere possibile assegnare dei permessi negli S-bit. In pratica dovrebbe essere consentito di operare solo con i soliti permessi di lettura, scrittura ed esecuzione (attraversamento).
rmdir directory
rmdir() elimina la directory indicata come argomento. Se l'argomento non viene fornito, si utilizza la variabile predefinita $_. Restituisce uno se l'operazione riesce, altrimenti zero, impostando anche la variabile $!.

Segue la descrizione di alcuni esempi.

548.3   I/O

Vengono elencate alcune funzioni che riguardano la gestione dei dati contenuti nei file.

Tabella 548.17. Funzioni Perl per la gestione del contenuto dei file.

Funzione Descrizione
binmode flusso, ":codifica"
binmode() consente di dichiarare la codifica utilizzata per il file corrispondente al flusso di file indicato come primo argomento. Si usa normalmente quando si vuole dichiarare la codifica dei flussi standard, che risultano già aperti senza alcuna dichiarazione esplicita.
chomp espressione_stringa
chomp lista
chomp() riceve come argomento un'espressione che restituisce una stringa o una lista di stringhe. Il suo scopo è eliminare dalla parte finale il codice di interruzione di riga, che coincide normalmente con il carattere <LF>. Precisamente si tratta di quanto contenuto nella variabile predefinita $/. Se non viene indicato l'argomento, interviene sul contenuto della variabile $_. Restituisce il numero di caratteri eliminati.
chop espressione_stringa
chop lista
chop() riceve come argomento un'espressione che restituisce una stringa o una lista di stringhe. Il suo scopo è eliminare l'ultimo carattere della stringa, o delle stringhe della lista. In questo senso differisce da chomp() che invece elimina la parte finale solo se necessario. Restituisce l'ultimo carattere eliminato.
close flusso
close() chiude un flusso di file aperto precedentemente. Restituisce Vero se l'operazione ha successo e non si sono prodotti errori di alcun tipo. È opportuno osservare che non è necessario chiudere un file se poi si deve riaprire immediatamente con la funzione open(): lo si può semplicemente riaprire.
eof flusso
eof() verifica se la prossima lettura del flusso di file supera la fine del file. Restituisce uno se ciò si verifica. Questa funzione è generalmente di scarsa utilità dal momento che la lettura di una riga oltre la fine del file genera un risultato indefinito che può essere verificato tranquillamente in un'espressione condizionale. Oltre a ciò, eof() si verifica prima che il tentativo di lettura sia stato fatto veramente, contrariamente a quanto avviene di solito in altri linguaggi di programmazione.
fcntl flusso,funzione,scalare
fcntl() esegue la chiamata di sistema omonima e per questo può essere utilizzata solo con un sistema operativo che la gestisce. Prima di poter utilizzare questa funzione occorre richiamare una serie di valori corrispondenti a macro del proprio sistema:
use Fcntl;
fileno flusso
fileno() restituisce il descrittore corrispondente a un flusso di file.
flock flusso, operazione
flock() esegue la chiamata di sistema omonima, oppure una sua emulazione, per il file identificato tramite il flusso di file. flock() permette di eseguire il blocco di un file nel suo complesso e non record per record. Restituisce Vero se l'operazione ha successo.
L'operazione, cioè il tipo di blocco, viene indicata attraverso una sorta di macro che viene inserita nel sorgente di Perl attraverso la dichiarazione seguente:
use Fcntl ':flock';
flock flusso, LOCK_SH
LOCK_SH corrisponde normalmente al valore numerico uno. Richiede un blocco condiviso (shared).
flock flusso, LOCK_EX
LOCK_EX corrisponde normalmente al valore numerico due. Richiede un blocco esclusivo.
flock flusso, LOCK_UN
LOCK_UN corrisponde normalmente al valore numerico otto. Rilascia il blocco.
flock flusso, LOCK_NB
LOCK_NB corrisponde normalmente al valore numerico quattro. Viene sommato a LOCK_SH o a LOCK_EX in modo da non attendere lo sblocco del file nel caso che questo risulti già bloccato.
getc flusso
getc() legge il file indicato dal flusso di file, o dallo standard input se viene omesso l'argomento, restituendo il prossimo carattere. Se si supera la fine del file restituisce la stringa nulla.
ioctl flusso, funzione, scalare
ioctl() esegue la chiamata di sistema omonima e per questo può essere utilizzata solo con un sistema operativo che la gestisce. Per poterla utilizzare occorre consultare la documentazione interna di Perl.
open flusso, [modalità,] file
open() apre il file indicato come ultimo argomento utilizzando il flusso di file indicato come primo argomento. Se manca l'argomento centrale, il nome del file è composto normalmente da un prefisso simbolico che ne rappresenta la modalità di utilizzo.
Il prefisso può essere staccato dal nome del file attraverso spazi. L'apertura del file rappresentato da un trattino (-) è equivalente all'apertura dello standard input, mentre l'apertura del file >- è equivalente all'apertura dello standard output.
Restituisce Vero se l'apertura ha successo.
open flusso, "<file"
open flusso, "<:codifica", "file"
Questo simbolo o l'assenza di ogni altro prefisso rappresenta l'apertura del file in lettura, o in input.
open flusso, ">file"
open flusso, ">:codifica", "file"
Il file viene troncato (viene ridotto a un file vuoto) e aperto in scrittura, o in output.
open flusso, ">>file"
open flusso, ">>:codifica", "file"
Il file viene aperto in scrittura in aggiunta.
open flusso, "+<file"
open flusso, "+<:codifica", "file"
Il file viene aperto in lettura e scrittura, senza il troncamento iniziale.
open flusso, "+>file"
open flusso, "+>:codifica", "file"
Il file viene aperto in scrittura e lettura, a cominciare dal troncamento iniziale.
open flusso, "+>>file"
open flusso, "+>>:codifica", "file"
Il file viene aperto in aggiunta e in lettura.
open flusso, "|comando"
Il file viene interpretato come un comando a cui inviare i dati in scrittura attraverso un condotto.
open flusso, "comando|"
Il file viene interpretato come un comando da cui leggere i dati emessi dal suo standard output.
open flusso, "|comando|"
Il file viene interpretato come un comando a cui inviare i dati in scrittura e attraverso il suo standard input, leggendo quanto emesso attraverso lo standard output.
pipe flusso_in_lettura,\
  \flusso_in_scrittura
pipe() esegue la chiamata di sistema omonima, aprendo due flussi di file, uno in lettura e l'altro in scrittura. Per poterla utilizzare occorre consultare la documentazione interna di Perl.
print flusso lista
print lista
print() emette attraverso il flusso di file indicato la lista di argomenti successiva. Se non viene specificato un flusso di file, tutto viene emesso attraverso lo standard output, oppure attraverso quanto specificato con la funzione select(). Se non viene specificato alcun argomento, viene emesso il contenuto della variabile $_.
È il caso di osservare che l'argomento che specifica il flusso è separato dalla lista di stringhe da emettere solo attraverso uno o più spazi (non si usa la virgola). Per lo stesso motivo, se il flusso di file è contenuto in un elemento di un array, oppure è il risultato di un'espressione, ciò deve essere indicato in un blocco.
Restituisce Vero se l'operazione di scrittura ha successo.
printf flusso formato,lista
printf formato,lista
È equivalente all'uso di sprintf() nel modo seguente:
print flusso sprintf formato,lista
read flusso, scalare, lunghezza, \
  \scostamento
read flusso,scalare,lunghezza
read() tenta di leggere il flusso di file specificato e di ottenere la quantità di byte espressa nel terzo argomento, inserendo quanto letto nella variabile scalare indicata come secondo. Se viene indicato anche il quarto argomento, lo scostamento, il contenuto della variabile non viene rimpiazzato completamente, ma è sovrascritto a partire dalla posizione indicata dallo scostamento stesso. La funzione restituisce il numero di byte letti effettivamente, oppure il valore indefinito se si è verificato un errore.
seek flusso, posizione, partenza
seek() modifica la posizione del puntatore riferito al flusso di file. La posizione effettiva nel file dipende dal valore del secondo e del terzo argomento. Precisamente, il terzo argomento può essere zero, uno o due, come descritto nelle voci successive.
seek flusso, posizione, SEEK_SET
seek flusso, posizione, 0
Sposta il puntatore esattamente a quanto indicato dal secondo argomento.
seek flusso, posizione, SEEK_CUR
seek flusso, posizione, 1
Sposta il puntatore alla posizione corrente, più quanto indicato dal secondo argomento.
seek flusso, posizione, SEEK_END
seek flusso, posizione, 2
Sposta il puntatore alla fine del file, più quanto indicato dal secondo argomento, che solitamente è un valore negativo.
select flusso
select() permette di definire il flusso di file in scrittura predefinito, per tutte quelle situazioni in cui questo concetto ha significato.
sprintf formato,lista
sprintf() restituisce una stringa formattata in modo analogo a quanto fa la funzione omonima del linguaggio C. Il primo argomento è la stringa da formattare, quelli successivi sono i valori da inserire. Perl utilizza una propria gestione della conversione secondo quanto riportato nelle tabelle 548.18 e 548.19.
sprintf() è sensibile all'attivazione della localizzazione, nel qual caso, il carattere utilizzato per separare le cifre intere da quelle decimali, dipende dalla variabile di ambiente LC_NUMERIC.
tell flusso
tell() restituisce la posizione corrente del puntatore interno riferito al flusso di file indicato come argomento, oppure a quello dell'ultima operazione di lettura eseguita.
use open ":codifica"
use open consente di dichiarare la codifica una volta per tutte, fino a quando si incontra un'altra istruzione del genere.

Tabella 548.18. Elenco dei simboli utilizzabili in una stringa formattata per l'utilizzo con sprintf().

Simbolo Corrispondenza
%%
Segno di percentuale.
%c
Un carattere con il numero dato.
%s
Una stringa.
%d
Un intero con segno a base 10.
%u
Un intero senza segno a base 10.
%o
Un intero senza segno in ottale.
%x
Un intero senza segno in esadecimale.
%e
Un numero a virgola mobile, in notazione scientifica.
%f
Un numero a virgola mobile, in notazione decimale fissa.
%g
Un numero a virgola mobile, secondo la notazione di %e o %f.
%X
Come %x, ma con l'uso di lettere maiuscole.
%E
Come %e, ma con l'uso della lettera E maiuscola.
%G
Come %g, ma con l'uso della lettera E maiuscola (se applicabile).
%p
Un puntatore (l'indirizzo utilizzato da Perl in esadecimale).
%n
Immagazzina, nella prossima variabile, il numero di caratteri già emessi.
%i
Sinonimo di %d.
%D
Sinonimo di %ld.
%U
Sinonimo di %lu.
%O
Sinonimo di %lo.
%F
Sinonimo di %f.

Tabella 548.19. Elenco dei simboli utilizzabili tra il segno di percentuale e la lettera di conversione.

Simbolo Corrispondenza
spazio
Il prefisso di un numero positivo è uno spazio.
+
Il prefisso di un numero positivo è il segno +.
-
Allinea a sinistra rispetto al campo.
0
Utilizza zeri, invece di spazi, per allineare a destra.
#
Prefissa un numero ottale con uno zero e un numero esadecimale con 0x...
n
Un numero definisce la dimensione minima del campo.
.n
Per i numeri a virgola mobile esprime la precisione, ovvero il numero di decimali.
.n
Per le stringhe definisce la lunghezza massima.
.n
Per gli interi definisce la lunghezza minima.
l
Interpreta un intero come il tipo C long o unsigned long.
h
Interpreta un intero come il tipo C short o unsigned short.
V
Interpreta un intero secondo il tipo standard di Perl.

Segue la descrizione di alcuni esempi.

548.4   Interazione con il sistema

Vengono descritte alcune funzioni per l'interazione con il sistema.

Tabella 548.33. Funzioni Perl per l'interazione con il sistema operativo.

Funzione Descrizione
exec elenco
exec() avvia l'esecuzione del comando indicato negli argomenti, senza riprendere l'esecuzione del programma al termine. Si comporta quindi in modo analogo al comando interno omonimo delle shell comuni.
kill segnale,elenco_di_processi
kill() invia un segnale a una serie di processi. Il primo argomento deve essere il segnale. Restituisce il numero di processi che hanno ricevuto il segnale.
sleep secondi
sleep() mette in pausa l'esecuzione del programma, per il numero di secondi indicato come argomento, eventualmente attraverso un'espressione. Se l'argomento non viene indicato, la pausa non ha fine. L'attesa può essere interrotta inviando un segnale SIGALRM al processo. Restituisce il numero di secondi trascorsi effettivamente.
system elenco
system() avvia l'esecuzione del comando indicato negli argomenti, attende la sua conclusione e restituisce il valore generato dal comando stesso.
time
time() restituisce la data e l'ora attuale espressa in secondi trascorsi dalla data iniziale gestita dal sistema. Nel caso della maggior parte dei sistemi Unix si tratta dell'ora zero del 1/1/1970. Il valore ottenuto da time() può essere utilizzato dalle funzioni gmtime() e localtime().
times
times() restituisce un array di quattro elementi che indicano rispettivamente: orario dell'utente; orario di sistema; orario dell'utente del processo figlio; orario di sistema del processo figlio.
umask maschera_numerica
umask() permette di definire la maschera dei permessi per il processo elaborativo del programma. Restituisce il valore precedente.
La maschera è espressa in forma numerica; ciò significa che se la maschera da indicare come argomento è una stringa, potrebbe essere necessario l'utilizzo della funzione oct() per garantire l'interpretazione ottale e non a base 10.

Segue la descrizione di alcuni esempi.

548.5   Funzioni matematiche

Perl fornisce una serie di funzioni matematiche tipiche della maggior parte dei linguaggi di programmazione.

Tabella 548.45. Funzioni Perl di tipo matematico.

Funzione Descrizione
abs x
abs() restituisce il valore assoluto del suo argomento. Se l'argomento non viene indicato, si utilizza la variabile predefinita $_.
atan2 x,y
atan2() restituisce l'arcotangente nell'intervallo da -PI a +PI.
cos x
cos() restituisce il coseno. Se l'argomento non viene indicato, si utilizza la variabile predefinita $_.
exp x
exp() restituisce e (la base del logaritmo naturale) elevato al valore di x, cioè dell'argomento. Se l'argomento non viene indicato, si utilizza la variabile predefinita $_.
int x
int() restituisce la parte intera del numero (o dell'espressione) fornito come argomento. Se l'argomento non viene indicato, si utilizza la variabile predefinita $_.
log x
log() restituisce il logaritmo naturale del valore fornito come argomento. Se l'argomento non viene indicato, si utilizza la variabile predefinita $_.
sin x
sin() restituisce il seno. Se l'argomento non viene indicato, si utilizza la variabile predefinita $_.
sqrt x
sqrt() restituisce la radice quadrata. Se l'argomento non viene indicato, si utilizza la variabile predefinita $_.

548.6   Funzioni di conversione

Nel seguito sono elencate le funzioni che si occupano di convertire dati in formati differenti.

Tabella 548.46. Funzioni Perl per la conversione dei dati.

Funzione Descrizione
chr n
chr() restituisce il carattere corrispondente al numero indicato come argomento. Se non viene specificato l'argomento, il numero viene letto dalla variabile $_.
hex stringa
hex() interpreta il proprio argomento come una stringa contenente un numero esadecimale. Restituisce il numero (decimale) corrispondente. Se non viene specificato l'argomento, il dato viene letto dalla variabile $_.
oct stringa
oct() interpreta il proprio argomento come una stringa contenente un numero ottale. Restituisce il numero (decimale) corrispondente. Se non viene specificato l'argomento, il dato viene letto dalla variabile $_.
ord stringa
ord() restituisce il valore numerico corrispondente al codice ASCII del primo carattere della stringa fornita come argomento. Se non viene specificato l'argomento, il dato viene letto dalla variabile $_.

Segue la descrizione di alcuni esempi.

548.7   Gestione delle espressioni

Sono elencate nel seguito le funzioni che si occupano di gestire l'esecuzione delle espressioni (quando necessario) e di conoscerne alcune caratteristiche.

Tabella 548.51. Funzioni Perl per il controllo delle espressioni e delle loro caratteristiche.

Funzione Descrizione
defined espressione
defined() restituisce Vero se l'espressione (o la variabile) restituisce un valore diverso da indefinito. Il valore indefinito può essere restituito in particolare nelle situazioni seguenti: la lettura oltre la fine del file; un errore di sistema; una variabile non ancora inizializzata.
È importante non confondere il valore indefinito con lo zero o la stringa nulla: si tratta di tre cose differenti, in particolare, zero e stringa nulla sono valori definiti.
scalar espressione
scalar() restituisce il risultato dell'espressione valutato in un contesto espressamente scalare.

548.8   Array e hash

Vengono elencate qui le funzioni che sono particolarmente dedicate alla gestione di array e hash.

Tabella 548.52. Funzioni Perl per la gestione di array.

Funzione Descrizione
delete espressione
delete() elimina uno o più elementi da un hash. L'espressione che rappresenta l'argomento della funzione deve rappresentare uno o più elementi dell'hash. Restituisce i valori cancellati, cioè quelli abbinati alle chiavi indicate per la cancellazione.
exists espressione
exists() verifica l'esistenza di una chiave all'interno di un hash. Se esiste, anche se il valore corrispondente dovesse risultare indefinito, restituisce Vero. L'espressione che rappresenta l'argomento della funzione deve rappresentare un solo elemento dell'hash.
keys hash
keys() restituisce un array composto da tutte le chiavi dell'hash posto come argomento.
pop array
pop() restituisce l'ultimo elemento dell'array eliminandolo dall'array stesso (accorciandolo). In pratica tratta l'array come una pila (stack) ed esegue un'azione di pop.
push array,lista
push() aggiunge all'array indicato come primo argomento gli elementi della lista successiva. In pratica tratta l'array come una pila (stack) ed esegue un'azione di push.
splice array,posizione_iniziale,\
  \lunghezza,lista
splice array,posizione_iniziale,\
  \lunghezza
splice array,posizione_iniziale
splice() elimina dall'array, indicato come primo argomento, gli elementi collocati a partire dalla posizione iniziale, indicata come secondo argomento, per una quantità definita dal terzo argomento. Se il terzo argomento (la quantità di elementi da eliminare) viene omesso, vengono eliminati tutti gli elementi a partire dalla posizione iniziale.
Se dopo il numero di argomenti da eliminare appaiono altri argomenti, vengono interpretati come una lista da inserire in sostituzione degli elementi cancellati. In tal modo, attraverso questa funzione, si può accorciare e allungare un array a piacimento, intervenendo in qualunque punto dello stesso.

Segue la descrizione di alcuni esempi.

548.9   Controllo dell'esecuzione del programma

Nel seguito sono elencate le funzioni che sono utili per controllare l'esecuzione di un programma Perl. In particolare ciò che permette di gestire le situazioni di errore.

Tabella 548.55. Funzioni Perl per la gestione delle situazioni di errore.

Funzione Descrizione
die lista
die() emette il contenuto degli elementi della lista fornita come argomento attraverso lo standard error e quindi termina l'esecuzione del programma.
Il programma Perl terminato in questo modo restituisce generalmente il valore contenuto dalla variabile $!.
do file
do() permette di includere il file indicato come argomento. In generale viene usato per inserire delle subroutine esterne.
eval blocco
eval espressione
eval() permette di controllare l'esecuzione di un blocco di istruzioni, in modo da limitare i danni in caso di interruzione. In pratica, se all'interno del blocco si manifesta un errore di sintassi o di esecuzione, o ancora se viene incontrata un'istruzione die(), eval() restituisce un valore indefinito e l'esecuzione del programma continua.
Se si manifesta un errore, questo viene riportato dalla variabile $@.
Nel caso non si verifichino errori, eval() restituisce il valore dell'ultima espressione del blocco di istruzioni controllato.
exit espressione
exit() valuta l'espressione posta come argomento e termina l'esecuzione del programma restituendo all'esterno quel valore.
È importante ricordare che dal punto di vista dei programmi, la restituzione del valore zero corrisponde a una conclusione con successo, mentre un valore pari a uno o superiore, rappresenta una conclusione anomala.
require espressione
require file
require() permette di specificare nel programma l'esigenza di qualcosa. Se si tratta di un'espressione il cui risultato è numerico, si vuole indicare che il programma richiede un interprete perl di versione maggiore o uguale a quel numero. Se si tratta di una stringa si intende che il programma richiede l'inclusione del file corrispondente come libreria.
L'inclusione del file si ottiene solo se ciò non è già avvenuto.
warn lista
warn() emette il contenuto degli elementi della lista fornita come argomento attraverso lo standard error. Solitamente, warn() viene utilizzato come die() nelle situazioni in cui non è necessario interrompere l'esecuzione del programma.

Segue la descrizione di alcuni esempi.

548.10   Riferimenti

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) Anche se la documentazione fa esplicito riferimento a questa possibilità, può darsi che non sia possibile evitare di indicare i permessi. Nello stesso modo, anche se si indicano i permessi non è garantito che questi vengano rispettati fedelmente dal sistema operativo sottostante, come descritto nell'esempio successivo.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome perl_funzioni_interne.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!