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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access