Perl Can';t定位对象方法“;子“uquot;via package";测试::基类::基类“;
我有一个基类包和另一个属于同一个包的module Sub.pm 在我的示例程序中,当我调用Perl Can';t定位对象方法“;子“uquot;via package";测试::基类::基类“;,perl,perl-module,Perl,Perl Module,我有一个基类包和另一个属于同一个包的module Sub.pm 在我的示例程序中,当我调用sub_方法时,它将以下错误打印为: 无法通过C:/Users/pavan.t/workspace/Simple/ExampleOnBase.pl第12行中的包“Test::Base::BaseClass”找到对象方法“sub_2;” 如果使用包Foo::Bar::Baz,perl将在INC路径中的某处搜索文件Foo/Bar/Baz.pm。 您的脚本使用Test::Base::BaseClass,因此它会查
sub_
方法时,它将以下错误打印为:
无法通过C:/Users/pavan.t/workspace/Simple/ExampleOnBase.pl第12行中的包“Test::Base::BaseClass”找到对象方法“sub_2;”
如果使用包
Foo::Bar::Baz
,perl将在INC
路径中的某处搜索文件Foo/Bar/Baz.pm
。
您的脚本使用Test::Base::BaseClass
,因此它会查找BaseClass.pm
。没有定义sub\uu
您应该能够添加use Sub
,无论其中定义了哪个包
但是,包和文件名应该(不必如此,但更好!)相似。应该是
sub-new{return bless{hello=>@[1],person=>@[2]},$[0];}
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_