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

w46czmvw  于 2022-11-15  发布在  Perl
关注(0)|答案(3)|浏览(155)

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

jq6vz3qz

jq6vz3qz1#

这都是perl的Perl代码。所有的区别都是纯粹的习惯用法。
使用package指令的Perl代码:

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

不使用package指令的Perl代码:

  • 称为“库”。(至少在历史上是这样。现在,“库”也可能被用来指模块或发行版。)
  • 扩展名通常为.pl
  • 应始终加载do
  • 污染调用方的命名空间。
  • 通常表示设计不合格。* 避免这些!*

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

  • 称为“脚本”。
  • 通常具有扩展名.pl,或者根本没有。
  • 可能会以shebang(#!)行开始,因此可以在不指定perl的情况下启动它们。
6mzjoqzu

6mzjoqzu2#

资源库档案(我假设您在这里指的是require 'foo.pl'的东西)是过时的(Perl 5之前的版本)形式的外部模块。在大多数情况下,您应该不再需要关心这些问题,尽管仍然有一些Perl 4安装,因此仍然有一些Perl代码与它们保持向后兼容(还有一些代码从未更新,仍然加载getcwd.pl等)。

ruarlubt

ruarlubt3#

什么都没有。它们都是包含Perl代码的文件。下面是一些可能的环境差异。

  1. perl可执行文件更有可能包含#!/bin/perl shbang。
    1.与.pm模块相比,旧的.pl Perl * 库 *(因此使用了“p”+“l”)更有可能被 * 要求 *。
  2. Perl 5风格(.pm)模块更可能使用Exporter--尽管 * 甚至更新的 * 模块都避免导出任何内容。

相关问题