0

我不知道为什么我无法访问子包:

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 第 6 行的包“MbzDb::Instance”(也许您忘记加载“MbzDb::Instance”?)找到对象方法“new”。

4

1 回答 1

0

尝试使用出色的FindBin模块。

use FindBin;
use lib $FindBin::Bin . '/lib';
use MbzDb::Instance;

如果您的结构如下所示,则此方法有效:

mbzdb
lib/
  MbzDb/
    Instance.pm
于 2013-04-12T22:18:54.963 回答