It’s all Perl code to perl
. All distinctions are purely idiomatic.
Perl code meant for inclusion that uses a package
directive:
- Called “module”.
- Usually has the extension
.pm
. Must have this extension foruse
to find them. - Should always be loaded with
require
, possibly viause
. - More modular, better supported by CPAN.
Perl code meant for inclusion that doesn’t use a package
directive:
- Called “library”. (At least historically. These days, “library” might also be used to refer to a module or distribution.)
- Usually has the extension
.pl
. - Should always be loaded with
do
. - Pollutes the caller’s namespace.
- Usually indicative of a substandard design. Avoid these!
Perl code meant for direct execution by interpreter:
- Called “script”.
- Usually has the extension
.pl
, or none at all. - Will probably start with a shebang (
#!
) line so they can be started without specifyingperl
.