Perl中的库文件和模块有什么区别?
jq6vz3qz1#
这都是perl的Perl代码。所有的区别都是纯粹的习惯用法。使用package指令的Perl代码:
perl
package
.pm
use
require
不使用package指令的Perl代码:
.pl
do
由解释器直接执行的Perl代码:
#!
6mzjoqzu2#
资源库档案(我假设您在这里指的是require 'foo.pl'的东西)是过时的(Perl 5之前的版本)形式的外部模块。在大多数情况下,您应该不再需要关心这些问题,尽管仍然有一些Perl 4安装,因此仍然有一些Perl代码与它们保持向后兼容(还有一些代码从未更新,仍然加载getcwd.pl等)。
require 'foo.pl'
getcwd.pl
ruarlubt3#
什么都没有。它们都是包含Perl代码的文件。下面是一些可能的环境差异。
#!/bin/perl
Exporter
3条答案
按热度按时间jq6vz3qz1#
这都是
perl
的Perl代码。所有的区别都是纯粹的习惯用法。使用
package
指令的Perl代码:.pm
。必须具有use
的扩展名才能找到它们。require
,可能通过use
加载。不使用
package
指令的Perl代码:.pl
。do
。由解释器直接执行的Perl代码:
.pl
,或者根本没有。#!
)行开始,因此可以在不指定perl
的情况下启动它们。6mzjoqzu2#
资源库档案(我假设您在这里指的是
require 'foo.pl'
的东西)是过时的(Perl 5之前的版本)形式的外部模块。在大多数情况下,您应该不再需要关心这些问题,尽管仍然有一些Perl 4安装,因此仍然有一些Perl代码与它们保持向后兼容(还有一些代码从未更新,仍然加载getcwd.pl
等)。ruarlubt3#
什么都没有。它们都是包含Perl代码的文件。下面是一些可能的环境差异。
#!/bin/perl
shbang。1.与
.pm
模块相比,旧的.pl
Perl * 库 *(因此使用了“p”+“l”)更有可能被 * 要求 *。.pm
)模块更可能使用Exporter
--尽管 * 甚至更新的 * 模块都避免导出任何内容。