.pm
(Perl 模块)和.pl
(Perl 脚本)文件有什么区别?
还请告诉我为什么我们1
从文件中返回。如果返回 2 或其他任何值,它不会产生任何错误,那么我们为什么1
要从 Perl 模块返回呢?
.pm
(Perl 模块)和.pl
(Perl 脚本)文件有什么区别?
还请告诉我为什么我们1
从文件中返回。如果返回 2 或其他任何值,它不会产生任何错误,那么我们为什么1
要从 Perl 模块返回呢?
从本质上讲,您使用的文件扩展名对于如何perl
解释这些文件没有任何影响。
但是,将模块放在.pm
遵循包名称的特定目录结构的文件中提供了便利。因此,如果您有一个模块Example::Plot::FourD
并将其Example/Plot/FourD.pm
放在.@INC
use
require
use Example::Plot::FourD
该文件必须返回 true 作为最后一条语句,以指示任何初始化代码的成功执行,因此习惯上以结束此类文件,
1;
除非您确定它会返回 true 否则。但最好只放1;
, 以防您添加更多语句。如果
EXPR
是一个裸词,则require
假定为“.pm”扩展名并为您将文件名中的“::”替换为“/”,以便于加载标准模块。这种形式的模块加载不会改变您的命名空间。
所做的只是从提供use
的包名中找出文件名,将require
其放在一个BEGIN
块中并在包上调用import
。没有什么可以阻止您不使用use
但手动执行这些步骤。
例如,下面我将Example::Plot::FourD
包放在一个名为 的文件中t.pl
,将其加载到文件中的脚本中s.pl
。
C:\Temp> cat t.pl
package Example::Plot::FourD;
use strict; use warnings;
sub new { bless {} => shift }
sub something { print "something\n" }
"Example::Plot::FourD"
C:\Temp> cat s.pl
#!/usr/bin/perl
use strict; use warnings;
BEGIN {
require 't.pl';
}
my $p = Example::Plot::FourD->new;
$p->something;
C:\Temp> s
something
这个例子表明模块文件不必以 结尾1
,任何真值都可以。
.pl 是单个脚本。
在 .pm ( Perl Module ) 中,您可以使用其他 Perl 脚本中的函数:
Perl 模块是一段独立的 Perl 代码,可由 Perl 程序或其他 Perl 模块使用。它在概念上类似于 C 链接库或 C++ 类。