In order to set the current namespace, use an @namespace
directive
at the top level of your program:
@namespace "passwd" BEGIN { ... } ...
After this directive, all simple non-completely-uppercase identifiers are
placed into the passwd
namespace.
You can change the namespace multiple times within a single source file, although this is likely to become confusing if you do it too much.
NOTE: Association of unqualified identifiers to a namespace is handled while
gawk
parses your program, before it starts to run. There is no concept of a “current” namespace once your program starts executing. Be sure you understand this.
Each source file for -i and -f starts out with an implicit ‘@namespace "awk"’. Similarly, each chunk of command-line code supplied with -e has such an implicit initial statement (see Command-Line Options).
Files included with @include
(see Including Other Files into Your Program) “push”
and “pop” the current namespace. That is, each @include
saves
the current namespace and starts over with an implicit ‘@namespace
"awk"’ which remains in effect until an explicit @namespace
directive is seen. When gawk
finishes processing the included
file, the saved namespace is restored and processing continues where it
left off in the original file.
The use of @namespace
has no influence upon the order of execution
of BEGIN
, BEGINFILE
, END
, and ENDFILE
rules.