Nesting Packages

Since all packages are global in scope, nesting of packages is not supported. However, you can have two packages, one called A and another called A::B, to give an illusion of nesting. This is a naming convention only and implies no necessary relation between the two packages; however, this convention is typically applied to groups of related packages, and the term “nested packages” does not seem wrong in such cases. For example, you could have a module called Math::Matrix for matrix manipulation and another called Math::Poisson that supports an infrastructure for simulating queuing models. The only relation between the two modules is that they both are mathematical in nature; they don’t share any implementation characteristics.

The :: notation is used as before to access variables and subroutines of nested packages:

$p = Math::Poisson::calculate_probability($lambda, $t);
print $Math::Constants::PI;

When you say use File, recall that Perl looks for a file called File.pm. If you say, use Math::Poisson, Perl looks for a file called Math/Poisson.pm (directory Math, file Poisson.pm). The double colon gets translated to a pathname separator, because the colon has a special significance for DOS filenames. Perl imposes no limits on the level of nesting.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset