Creating Modules
Earlier, we said that there are two ways for a module to make its interface available to your program: by exporting symbols or by allowing method calls. We'll show you an example of the first style here; the second style is for object-oriented modules and is described in the next chapter. (Object-oriented modules should export nothing, since the whole idea of methods is that Perl finds them for you automatically, based on the type of the object.)
To construct a module called Bestiary
, create
a file called Bestiary.pm that looks like
this:
package Bestiary; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(camel); # Symbols to be exported by default our @EXPORT_OK = qw($weight); # Symbols to be exported on request our $VERSION = 1.00; # Version number ### Include your variables and functions here sub camel { print "One-hump dromedary" } $weight = 1024; 1;
A program can now say use Bestiary
to be able
to access the camel
function (but not the
$weight
variable), and use Bestiary
qw(camel $weight)
to access both the function and the
variable.
You can also create modules that dynamically load code written in C. See Chapter 21, for details.
Module Privacy and the Exporter
Perl does not automatically patrol private/public borders within its modules--unlike languages such as C++, Java, and Ada, Perl isn't obsessed with enforced privacy. A Perl module would prefer that you stay out of its living room because you weren't invited, not because it has a shotgun.
Get Programming Perl, 3rd 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.