Declares the BLOCK, or the rest of the compilation unit, as being in
the given namespace. The scope of the package declaration is either the
supplied code BLOCK or, in the absence of a BLOCK, from the declaration
itself through the end of the enclosing block, file, or eval (the same
as the my
operator). All unqualified dynamic identifiers in this
scope will be in the given namespace, except where overridden by another
package
declaration.
A package statement affects dynamic variables only, including those
you've used local
on, but not lexical variables, which are created
with my
(or our
(or state
)). Typically it would be the first
declaration in a file included by require
or use
. You can switch into a
package in more than one place, since this only determines which default
symbol table the compiler uses for the rest of that block. You can refer to
identifiers in other packages than the current one by prefixing the identifier
with the package name and a double colon, as in $SomePack::var
or ThatPack::INPUT_HANDLE
. If package name is omitted, the main
package as assumed. That is, $::sail
is equivalent to
$main::sail
(as well as to $main'sail
, still seen in ancient
code, mostly from Perl 4).
If VERSION is provided, package
sets the $VERSION
variable in the given
namespace to a version object with the VERSION provided. VERSION must be a
"strict" style version number as defined by the version module: a positive
decimal number (integer or decimal-fraction) without exponentiation or else a
dotted-decimal v-string with a leading 'v' character and at least three
components. You should set $VERSION
only once per package.
See Packages in perlmod for more information about packages, modules, and classes. See perlsub for other scoping issues.