Joe*_*Joe 3 perl module exporter
我是Perl的新手,我面临以下问题,不知道为什么跟随不起作用.
我的Perl模块包含:
package PACK2;
use Exporter;
@ISA = ('Exporter');
@EXPORT_OK=('whom');
sub why(){
print "why\n";
}
sub whom(){
print "whom\n";
}
1;
Run Code Online (Sandbox Code Playgroud)
我的Perl文件包含:
#!/usr/bin/perl -w
use pack;
use pack2 ('whom');
PACK::who();
&whom();
Run Code Online (Sandbox Code Playgroud)
我运行这个程序,找不到whom:
perl use_pack_pm.pl
who
Undefined subroutine &main::whom called at use_pack_pm.pl line 7.
Run Code Online (Sandbox Code Playgroud)
Perl是一种区分大小写的语言.我不认为模块"pack2"和"PACK2"是相同的.(但我实际上没有测试过这个.)
内部use pack2 ('whom');被翻译成类似的东西
BEGIN {
require pack2;
pack2->import('whom');
}
Run Code Online (Sandbox Code Playgroud)
除了perl的将检查,看它是否可以调用import在pack2它试图调用之前.在您的示例中,没有命名的包pack2,因此没有import要调用的函数.如果你的包名和文件名匹配,那么perl会找到import提供的功能Exporter.
没有任何警告,因为Perl很难说这是故意做的.大多数OO模块不会导出任何函数或变量,因此它们不会提供import函数.
| 归档时间: |
|
| 查看次数: |
4274 次 |
| 最近记录: |