无法加载Perl子包

时间:2013-04-11 07:11:08

标签: perl perl-module

我无法理解为什么我无法访问子包:

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”?)。

1 个答案:

答案 0 :(得分:0)

尝试使用优秀的FindBin模块。

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

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

mbzdb
lib/
  MbzDb/
    Instance.pm