2013-06-20 3 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, который относится к тому же пакету.Не удается найти метод метода объекта «sub_» через пакет «Test :: Base :: BaseClass»

В моем примере программы, когда я называю метод sub_, он выводит следующее сообщение об ошибке, как:

Не удается найти метод объекта «sub_» с помощью пакета «Test :: Base :: BaseClass» в C: /Users/pavan.t/workspace/Simple/ExampleOnBase.pl линия 12.

+0

Это должно быть 'sub new {return bless {hello => @_ [1], person => @_ [2]}, $ _ [0]; } ' –

ответ

1

Если вы используете пакет Foo::Bar::Baz, Perl ищет файл foo/bar/baz.pm где-то в INC пути. Ваш скрипт использует Test::Base::BaseClass, поэтому он находит BaseClass.pm. Определено sub sub_.

Вы должны иметь возможность добавить use Sub, независимо от того, какой пакет там определен.

Однако пакеты и имена файлов должны (они не должны, но это лучше!) Быть похожими.

+0

Спасибо, я понял ... – pavan

Смежные вопросы