库文件和模块有什么区别?

Perl中的库文件和模块有什么区别?

这都是perl的Perl代码。 所有的区别纯粹是惯用的。

用于包含的Perl代码使用package指令:

  • 被称为“模块”。
  • 通常有扩展名.pm 。 必须有这个扩展名才能find它们。
  • 应始终加载require ,可能通过use
  • 更多的模块化,CPAN更好的支持。

Perl代码意味着不包含package指令:

  • 被称为“图书馆”。
  • 通常有扩展名.pl
  • 应该总是装着do
  • 污染调用者的名称空间。
  • 通常表示不合格的devise。 避免这些!

Perl代码的意思是由解释器直接执行:

  • 称为“脚本”。
  • 通常有扩展名.pl ,或根本没有。
  • 可能会从一个shebang( #! )行开始,这样他们可以在不指定perl情况下启动。

库文件(我假设你的意思是在这里require 'foo.pl'东西)是一个过时的(pre-Perl 5)forms的外部模块。 大多数情况下,你不需要关心,虽然还有一些Perl 4的安装,所以仍然有一些Perl代码保持向后兼容(还有一些代码是从来没有更新,仍然加载getcwd.pl等)。

没有。 它们都是包含Perl代码的文件。 不过,以下是一些可能的情况差异。

  1. 一个perl可执行文件更可能有一个#!/bin/perl shbang。
  2. 旧的.pl Perl (因此'p'+'l')比.pm模块更可能期望被需要
  3. Perl 5样式( .pm )模块更可能使用Exporter ,尽pipe更新的模块也不会导出任何内容。