Namespaces and Packages
A namespace does what it says: it stores names (or identifiers), including names of variables, subroutines, filehandles, and formats. Each namespace has its own symbol table, which is basically a hash with a key for each identifier.
The default namespace for programs is main
, but you can define other namespaces
and variables and use them in your program. Variables in different
namespaces can even have the same name, but they are completely
distinct from one another.
In Perl, a namespace is held in a package. By convention, package names start with a capital letter, and you should follow that convention when you create your own packages.
Each package starts with a package
declaration. The package
call takes one argument: the name of
the package. Within the scope of a package declaration, all regular
identifiers are created within that package (except for my
variables).
From inside one package, you can refer to variables from
another package by “qualifying” them with the package name. To do
this, place the name of the package followed by two colons (::
) before the identifier’s name, e.g.,
$Package::varname
.
If the package name is null, the main
package is assumed. For example,
$var
and $::var
are the same as $main::var
.
Packages may be nested inside other packages. However, the
package name must still be fully qualified. For example, if the
package Province
is declared inside
the package Nation
, a variable in
the Province package is called as $Nation::Province::var ...
Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.