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行。
答案 0 :(得分:1)
如果您使用包Foo::Bar::Baz
,则perl会在foo/bar/baz.pm
路径中的某处搜索文件INC
。
您的脚本使用Test::Base::BaseClass
,因此它会找到BaseClass.pm
。没有sub sub_
定义。
无论在哪个包中定义,您都应该能够添加use Sub
。
但是,软件包和文件名应该(它们不必,但它更好!)类似。