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