Successivo: Caricare librerie condivise, Precedente: Codice di ritorno, Su: Invocare Gawk [Contenuti][Indice]
Questa
sezione descrive una funzionalità disponibile solo in
gawk
.
La direttiva @include
può essere usata per leggere file sorgenti
di awk
esterni. Questo dà la possibilità di suddividere file
sorgenti di awk
di grandi dimensioni in porzioni più piccole e più
maneggevoli, e anche di riutilizzare codice awk
di uso comune
da diversi script awk
. In altre parole, si possono
raggruppare funzioni di awk
usate per eseguire determinati compiti
all’interno di file esterni. Questi file possono essere usati proprio come
librerie di funzioni, usando la direttiva @include
assieme alla
variabile d’ambiente AWKPATH
. Si noti che i file sorgenti possono
venire inclusi anche usando l’opzione -i.
Vediamolo con un esempio.
Iniziamo con due script awk
(banali), che chiameremo
test1 e test2. Questo è lo script test1:
BEGIN { print "Questo è lo script test1." }
e questo è test2:
@include "test1" BEGIN { print "Questo è lo script test2." }
L’esecuzione di gawk
con test2
produce il seguente risultato:
$ gawk -f test2 -| Questo è lo script test1. -| Questo è lo script test2.
gawk
esegue lo script test2, il quale include
test1, usando la direttiva @include
.
Così, per includere file sorgenti di awk
esterni, basta usare
@include
seguito dal nome del file da includere,
racchiuso tra doppi apici.
NOTA: Si tenga presente che questo è un costrutto del linguaggio e che nome-file non può essere una variabile di tipo stringa, ma solo una costante di tipo letterale racchiusa tra doppi apici.
I file da includere possono essere nidificati; p.es., dato un terzo script, che chiameremo test3:
@include "test2" BEGIN { print "Questo è lo script test3." }
L’esecuzione di gawk
con lo script test3 produce i
seguenti risultati:
$ gawk -f test3 -| Questo è lo script test1. -| Questo è lo script test2. -| Questo è lo script test3.
Il nome-file, naturalmente, può essere un nome di percorso. Per esempio:
@include "../funzioni_di_i_o"
e:
@include "/usr/awklib/network"
sono entrambi percorsi validi. La variabile d’ambiente AWKPATH
può
rivestire grande importanza quando si usa @include
. Le stesse
regole per l’uso della variabile d’ambiente AWKPATH
nelle ricerche
da riga di comando
(vedi la sezione Ricerca di programmi awk
in una lista di directory.) si applicano anche a
@include
.
Questo è di grande aiuto nella costruzione di librerie di funzioni di
gawk
. Se si ha uno script di grandi dimensioni contenente
utili funzioni awk
di uso comune, lo si può suddividere in file
di libreria e mettere questi file in una directory dedicata. In seguito si
possono includere queste “librerie” usando il percorso completo dei
file, o impostando opportunamente la variabile d’ambiente AWKPATH
e
quindi usando @include
con la sola parte del percorso completo che
designa il file. Naturalmente,
si possono tenere i file di libreria in più di una directory;
più è complesso l’ambiente di lavoro, più
directory possono essere necessarie per organizzare i file da includere.
Vista la possibilità di specificare opzioni -f multiple, il
meccanismo @include
non è strettamente necessario.
Comunque, la direttiva @include
può essere d’aiuto nel costruire
programmi gawk
autosufficienti, riducendo così la necessità
di scrivere righe di comando complesse e tediose.
In particolare, @include
è molto utile per scrivere script CGI
eseguibili da pagine web.
Le regole usate per trovare un file sorgente, descritte in
Ricerca di programmi awk
in una lista di directory., valgono anche per i file
caricati tramite @include
.
Infine, i file inclusi con @include
sono considerati
appartenere allo spazio-dei-nomi ‘"awk" (@namespace "awk")’
a inizio programma. Vedi la sezione Come cambiare lo spazio-dei-nomi, per ulteriori
informazioni.
Successivo: Caricare librerie condivise, Precedente: Codice di ritorno, Su: Invocare Gawk [Contenuti][Indice]