无法通过包“Test :: Base :: BaseClass”找到对象方法方法“sub_”

时间:2013-06-20 09:00:37

标签: perl perl-module

BaseClass.pm

package Test::Base::BaseClass;

sub new {

    return bless {hello=>@_[0],person=>@_[1]} , __PACKAGE__;    
}

sub hello {
    print "hello";
}

sub person {
    my $self = shift;
    return $self->{person};
}

1;

Sub.pm
package Test::Base::BaseClass;


sub sub_ {

    my $self= shift;
    print __PACKAGE__;

}

1;

example.pl

use lib 'C:/Users/pavan.t/workspace/Simple';
use Test::Base::BaseClass;
$sub =  Test::Base::BaseClass->new('pavan','pavan');

print $sub->person;
print $sub->sub_

我有一个BaseClass包,另一个模块Sub.pm属于同一个包。

在我的示例程序中,当我调用sub_方法时,它会输出以下错误:

  

找不到对象方法" sub _"通过包" Test :: Base :: BaseClass"在C:/Users/pavan.t/workspace/Simple/ExampleOnBase.pl第12行。

1 个答案:

答案 0 :(得分:1)

如果您使用包Foo::Bar::Baz,则perl会在foo/bar/baz.pm路径中的某处搜索文件INC。 您的脚本使用Test::Base::BaseClass,因此它会找到BaseClass.pm。没有sub sub_定义。

无论在哪个包中定义,您都应该能够添加use Sub

但是,软件包和文件名应该(它们不必,但它更好!)类似。