-
The
package
keyword starts a new namespace (which lasts until another package declaration or until end of block). All user-defined global identifiers (variables, subroutines, filehandles) belong to this package. Lexical variables do not belong to any package.
package Employee; # Put in file Employee.pm
@employees = ("John", "Fred", "Mary", "Sue");
sub list_employee { print @employees; }
1; # Last executing statement in file must be
# non-zero, to indicate successful loading
-
To load module Employee:
use Employee;
#or
require Employee;
Specify the load path with the
-I
command-line option, PERL5LIB environment variable, or
@INC
.
-
Access foreign package's variables and subroutines with fully qualified names:
print @Employee::employees;
Employee::print();
Privacy is not enforced.
-
If a subroutine is not found in that package, a default subroutine
AUTOLOAD()
is called, if present.
$AUTOLOAD
is set to the fully qualified name of the missing subroutine.
-
To inherit module C from modules A and B, prime C's
@ISA
array with the names of its superclass modules:
package A;
sub foo{ print "A::foo called \n";}
package C;
@ISA = ("A", "B");
C->foo(); # Calls A::foo, because B does not