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",它仍然找不到它。
use Exporter 'import';
代替子类化时,我认为再也没有理由去子类化它了。 - ysth