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

时间:2011-06-16 17:24:12

标签: perl

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

3 个答案:

答案 0 :(得分:14)

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

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

  • 被称为“模块”。
  • 通常具有扩展名.pm。必须有use的此扩展程序才能找到它们。
  • 应始终加载require,可能通过use
  • 更加模块化,更好地支持CPAN。

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

  • 被称为“图书馆”。
  • 通常具有扩展名.pl
  • 应始终加载do
  • 污染来电者的名称空间。
  • 通常表示不合标准的设计。 避免使用这些!

Perl代码意味着由解释器直接执行:

  • 被称为“剧本”。
  • 通常具有扩展名.pl,或者根本没有。
  • 可能会以shebang(#!)行开头,这样就可以在不指定perl的情况下启动它们。

答案 1 :(得分:7)

库文件(我假设你的意思是require 'foo.pl'这里的东西)是一种过时的(pre-Perl 5)形式的外部模块。在大多数情况下,你不应该再关心了,虽然 仍然是一些Perl 4安装,因此仍然有一些Perl代码保持向后兼容(并且有一些代码简单从未更新过,仍然加载getcwd.pl等。)。

答案 2 :(得分:-1)

无。它们都是包含Perl代码的文件。不过,这里有一些可能的间接差异。

  1. perl可执行文件更可能有#!/bin/perl shbang。
  2. .pl Perl (因此'p'+'l')比.pm更有可能期望 模块。
  3. Perl 5样式(.pm)模块更有可能使用Exporter - 尽管甚至更新的模块避免导出任何内容。