.pm
(Perl模块)和.pl
(Perl脚本)文件有什么区别?
还请告诉我为什么我们1
从文件返回.如果返回2或其他任何东西,它不会产生任何错误,那么为什么我们1
从Perl模块返回?
Sin*_*nür 74
在核心,您使用的文件扩展名对于如何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
Run Code Online (Sandbox Code Playgroud)
此示例显示模块文件不必结束1
,任何真值都可以.
归档时间: |
|
查看次数: |
95270 次 |
最近记录: |