我无法理解为什么我无法访问子包:
mbzdb
:
#!/usr/bin/perl -w
use lib "./lib";
use MbzDb::Instance;
my $instance = new MbzDb::Instance();
$instance->startFromCommandLine();
lib/MbzDb/Instance.pm
:
#!/usr/bin/perl -w
package MbzDb::Instance;
use strict;
use warnings;
use Getopt::Long;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(new startFromCommandLine);
sub new {
my $class = shift;
return bless {}, $class;
}
sub startFromCommandLine {
my $self = shift;
}
如果我在lib/MbzDb.pm
中使用相同的代码,则导出正常。我做错了什么?
给出的错误是:
无法通过软件包“MbzDb :: Instance”找到对象方法“new”(也许你忘了在./mbzdb第6行加载“MbzDb :: Instance”?)。
答案 0 :(得分:0)
尝试使用优秀的FindBin模块。
use FindBin;
use lib $FindBin::Bin . '/lib';
use MbzDb::Instance;
如果您的结构如下所示,则此方法有效:
mbzdb
lib/
MbzDb/
Instance.pm