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 AWKPATH (Variabile)) 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.
Come è stato detto in AWKPATH (Variabile), i file sorgenti vengono
sempre cercati nella directory corrente, prima di eseguire la ricerca in
AWKPATH
; questo si applica anche ai file indicati con
@include
.
Successivo: Caricare librerie condivise, Precedente: Codice di ritorno, Su: Invocare Gawk [Contenuti][Indice]