Наследования в Perl

Тема в разделе "Perl программирование", создана пользователем Guest_Washington, 18 апр 2005.

Статус темы:
Закрыта.
  1. Guest_Washington

    Guest_Washington Гость

    Здравствуйте.
    У меня токая проблемка.
    Имеется два модуля.
    person.pm и employee.pm – последний должен унаследовать все свойство и методы первого. Оба они лежат в папке info.
    package person;
    sub new
    {
    my $class=shift;
    my $self={};
    return bless($self, $class);
    }
    sub name
    {
    my $self=shift;
    $self->{NAME}=shift if @_;
    return $self->{NAME};
    }
    sub age
    {
    my $self=shift;
    $self->{AGE}=shift if @_;
    return $self->{AGE};
    }
    1;
    package employee;
    use person;
    @ISA=("person");
    1;
    #!/usr/bin/perl -w

    use CGI qw:)all);
    use CGI::Carp qw(fatalsToBrowser);

    use info::employee; - после этой строчки
    появляется ошибка
    [Sun Apr 17 22:16:52 2005] DzTemp.pl: Compilation failed in require at start.pl line 6.
    [Sun Apr 17 22:17:17 2005] DzTemp.pl: BEGIN failed--compilation aborted at start.pl line 6.

    Мучаюсь уже второй день. Может быть кто подскажет как решить эту проблему.
    Спасибо.
     
  2. FUKS

    FUKS Гость

    А путь к папке info где-то прописан? Вот что откопал в каком-то мануале:

    Код (Text):
    Создание библиотеки.

    Если вы хотите создать модуль отдельным файлом и использовать как библиотеку подпрограмм, при этом вызывать подпрограммы библиотеки, не указывая имени модуля, вам необходимо оформить модуль следующим образом:
    package имя_модуля;    # Такое же как и имя этого файла без расширения '.pm'
    require Exporter;   # Обязательная строка для экспорта имен
    @ISA = qw(Exporter);    # -//-
    @EXPORT = qw(func1 func2) # Перечисляем имена функций. Внимание ! нет запятой!
    @EXPORT_OK = qw( $переменная @массив ); # Указать публичные переменные, массивы
    и т.д. если необходимо
    { # Начало блока модуля
    .....
    sub func1
    ........
    sub func2
    ........
    1;
    }
    Данный файл с расширением ".pm" должен храниться в одной из библиотечных директорий Perl. Они перечислены в массиве @INC, одна из них обычно "/usr/local/lib/perl/".

    В головной программе вы указываете:
    * use имя_модуля;
    и вам становятся доступны имена подпрограмм данного модуля.
     
  3. Vovochka

    Vovochka Гость

    Код (Text):
    package employee;
    use person;
    @ISA=("person");
    1;
    меняем на

    Код (Text):
    package employee;
    use base person;
    1;
    это раз, а во вторых
    модуль называеться employee
    а ты пишешь: info::employee;
    Тоже ничего не выйдет. Названия пакетов поменяй employee => info::employee
    Это касаеться и модуля person

    Для: FUKS
    Блин, ты темы из самого конца искал? Им уже пару лет.
     
Загрузка...
Похожие Темы - Наследования Perl
  1. Anna_Kashina
    Ответов:
    0
    Просмотров:
    137
  2. SvetlanaL
    Ответов:
    0
    Просмотров:
    410
  3. SvetlanaL
    Ответов:
    0
    Просмотров:
    424
  4. SvetlanaL
    Ответов:
    0
    Просмотров:
    504
  5. SvetlanaL
    Ответов:
    0
    Просмотров:
    606
Статус темы:
Закрыта.

Поделиться этой страницей