2013-06-20 57 views
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_ 

我有一個BaseClass包和另一個屬於同一個包的模塊Sub.pm。通過包「Test :: Base :: BaseClass」找不到對象方法方法「sub_」

在我的例子程序,當我打電話sub_方法,它打印下面的錯誤爲:

通過一攬子「測試::基地:: BaseClass的」無法找到對象的方法「sub_」在C:/Users/pavan.t/workspace/Simple/ExampleOnBase.pl線12

+0

這應該是'sub new {return bless {hello => @_ [1],person => @_ [2]},$ _ [0]; }' –

回答

1

如果您使用包Foo::Bar::Baz,是用perl在INC路徑搜索某處文件foo/bar/baz.pm。 您的腳本使用Test::Base::BaseClass,因此它找到BaseClass.pm。沒有定義sub sub_

您應該可以添加use Sub,無論在那裏定義哪個包。

但是,包和文件名應該(它們不必但更好!)是相似的。

+0

謝謝,我明白了... – pavan

相關問題