Packages and Files
The same package declaration can be
present in multiple files. Or multiple packages can be declared in
one file. By convention, a package is usually assigned its own file
and named package.pm or
package.pl. Files with the
suffix .pm
are called Perl
modules, and packages inside files with the
suffix .pl
are usually referred to as
libraries
.
The former naming convention is preferred now because the
use
statement requires it, as we will soon see.
The require
keyword simply loads a file into your
program (sources it, in shell parlance). This is
identical in spirit to #include
in C, except that
Perl does not bother about a file that has already been
loaded:[26]
require "test.pl"; # load test.pl if it hasn't already been loaded
If you omit the suffix and the quotes, a .pm
suffix is assumed. The use
statement is similar in that
respect, but is more restrictive in that it accepts only module
names, not filenames. So, while there is no necessary relation
between module names and filenames in general, use
does force you to adopt a standard naming convention, which is a very
good thing indeed, in my opinion. But there is more to
use
than just syntactic sugar.
The big difference between use
and
require
is that the use
statement is executed as soon as it is parsed.
For this reason, the following attempt to load a module dynamically
won’t work, because the assignment statement is executed only
after everything has been parsed and compiled:
$pkg_name = "Account"; # executes ...
Get Advanced Perl Programming 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.