Нужна помощь в расширении моего модуля Perl - PullRequest
1 голос
/ 09 марта 2011

Я пытаюсь расширить специфичный для моей компании BaseClass (Acme :: BaseClass), но всякий раз, когда я:

package Manager;
use strict;
use warnings;
use base qw(Acme::BaseClass)
sub new { ...

выдает ошибку:

Base class package "Acme::BaseClass" is empty.

Но в моем сценарииЯ могу использовать пакет отлично:

use Acme::BaseClass;
my $bc = BaseClass->new("myname");
$bc->prnt(); # prints "myname"
exit;

Это мой первый раз, когда я пытаюсь наследовать в Perl, так что, может быть, я упускаю что-то простое?* Я пытался использовать «parent», и он также не работает

Я пытался использовать старую школу:

BEGIN {require Acme :: BaseClass;push @ISA, qw (Acme :: BaseClass);}

Я не уверен, как это сделать правильно.Надеюсь, что-то простое мне не хватает.Если никто не может ответить, я добавлю больше деталей.

Ответы [ 2 ]

14 голосов
/ 09 марта 2011

Судя по вашему примеру кода, похоже, что в Acme/BaseClass.pm есть что-то вроде этого

package BaseClass;

....

1;

и ему нужно

package Acme::BaseClass;

....

1;
0 голосов
/ 09 марта 2011

Возможно, дочерний класс не может найти модуль BaseClass, но ваш тестовый скрипт может. Убедитесь, что @INC настроен правильно, так что оба могут найти ваш модуль.

...