库文件和模块有什么区别?
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代码的文件。 不过,以下是一些可能的情况差异。
- 一个perl可执行文件更可能有一个
#!/bin/perl
shbang。 - 旧的
.pl
Perl 库 (因此'p'+'l')比.pm
模块更可能期望被需要 。 - Perl 5样式(
.pm
)模块更可能使用Exporter
,尽pipe更新的模块也不会导出任何内容。