Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between library files and modules?

Tags:

perl

What is the difference between library files and modules in Perl?

like image 573
Chankey Pathak Avatar asked Jun 16 '11 17:06

Chankey Pathak


2 Answers

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 for use to find them.
  • Should always be loaded with require, possibly via use.
    • Must therefore return a true value.
  • 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 specifying perl.
like image 187
ikegami Avatar answered Nov 16 '22 01:11

ikegami


Library files (I'm assuming you mean require 'foo.pl' stuff here) are an obsolete (pre-Perl 5) form of external module. For the most part, you shouldn't need to care any more, although there are still some Perl 4 installations around and therefore still some Perl code that remains backward compatible with them (and there's some code that's simply never been updated and still loads getcwd.pl etc.).

like image 44
geekosaur Avatar answered Nov 16 '22 00:11

geekosaur