Successivo: Nomi qualificati, Su: Spazi-dei-nomi [Contenuti][Indice]
awk
standardIn awk
standard, esiste un unico spazio-dei-nomi globale.
Ciò significa che tutti i nomi di funzione e i nomi di variabili
globali devono essere unici.
Per esempio, due differenti file sorgenti di awk
,
se usati insieme,
non possono entrambi definire una funzione avente nome
min()
, o definire una variabile con lo stesso nome,
usata come scalare in programma e come vettore in un altro.
Questa situazione può essere accettabile se i programmi sono
di dimensioni piccole, qualche centinaio di righe, o anche
qualche migliaio, ma impedisce lo sviluppo di librerie riusabili
contenenti funzioni di awk
, e può far sì che file di
librerie sviluppate in maniera indipendente fra loro possano
incidentalmente entrare in conflitto con le variabili globali
“private” proprie di un’altra libreria
(vedi la sezione Dare un nome a variabili globali in funzioni di libreria).
Molti altri linguaggi di programmazione risolvono questo problema rendendo disponibile qualche tipo di controllo sullo spazio-dei-nomi: un modo per poter stabilire che “questa funzione è nello spazio-dei-nomi xxx, mentre quella funzione è nello spazio-dei-nomi yyy”. (Naturalmente, in realtà c’è ancora un unico spazio-dei-nomi, quello composto da tutti gli spazi-dei-nomi, ma si spera che ci siano solo pochi spazi-dei-nomi in uso da parte di un determinato programma e, quindi, che la probabilità di conflitti sia molto minore). Queste funzionalità sono talore indicate col nome di pacchetti (packages) o moduli (modules).
A partire dalla versione 5.0, gawk
fornisce un
meccanismo semplice per mettere funzioni e variabili globali in
spazi-dei-nomi separati fra loro.