【发布时间】:2020-04-07 15:52:47
【问题描述】:
Linux 上的 perl 5.24.0
Perl 模块“嵌套”(某种)问题... 我似乎无法使其正常工作,并且想知道是否有人可以告诉我出了什么问题。下面这个简单的例子比我的语言更能表达我的问题......
首先,ping.pl...
#!/usr/bin/env perl
# This is ping.pl
use ping_mod;
ping_dbh();
exit;
接下来是 perl 模块,ping_mod.pm...
#!/usr/bin/env perl
use Exporter;
use ping_common;
package ping_mod;
@ISA = qw(Exporter);
@EXPORT = qw(ping_dbh);
sub ping_dbh {
set_dbh();
print "dbh = $dbh\n";
}
1;
最后是 ping_mod 使用的 ping_common.pm...
#!/usr/bin/env perl
use Exporter;
our $dbh;
package ping_common;
@ISA = qw(Exporter);
@EXPORT = qw($dbh set_dbh);
sub set_dbh {
$dbh = 99;
}
1;
当我运行 ping.pl 时,我得到...
Undefined subroutine &ping_mod::set_dbh called at ping_mod.pm line 11.
但如果我将 ping_mod.pm 更改为...
#!/usr/bin/env perl
use Exporter;
use ping_common;
package ping_mod;
@ISA = qw(Exporter);
@EXPORT = qw(ping_dbh);
sub ping_dbh {
# set_dbh();
# print "dbh = $dbh\n";
print "hi there\n";
}
1;
...它运行良好。所以,我认为它必须导出正常。但是“使用” ping_common 会以某种方式搞砸。
即使我在 ping.pl 中“使用 ping_common”,它仍然找不到。
【问题讨论】:
标签: perl