Declares the compilation unit as being in the given namespace. The scope
of the package declaration is from the declaration itself through the end
of the enclosing block, file, or eval (the same as the
All further unqualified dynamic identifiers will be in this namespace.
A package statement affects only dynamic variables--including those
local on--but not lexical variables, which are created
my. Typically it would be the first declaration in a file to
be included by the
use operator. You can switch into a
package in more than one place; it merely influences which symbol table
is used by the compiler for the rest of that block. You can refer to
variables and filehandles in other packages by prefixing the identifier
with the package name and a double colon:
If the package name is null, the
package as assumed. That is,
is equivalent to
(as well as to
still seen in older code).
If NAMESPACE is omitted, then there is no current package, and all identifiers must be fully qualified or lexicals. However, you are strongly advised not to make use of this feature. Its use can cause unexpected behaviour, even crashing some versions of Perl. It is deprecated, and will be removed from a future release.
See "Packages" in perlmod for more information about packages, modules, and classes. See perlsub for other scoping issues.