Perl, явно использующий модуль UNIVERSAL, заставляет модуль не экспортировать символы - PullRequest
1 голос
/ 10 марта 2011

У меня есть два Perl-модуля, один из которых является «объектной базой», а другой импортирует функции из этого «объектной базы». Когда я компилирую второй модуль (perl -c Foo/Bar/NewObject.pm), он компилируется без каких-либо предупреждений.

Проблема в том, что если я включаю модуль UNIVERSAL в компиляцию второго модуля (perl -MUNIVERSAL -Mstrict -wc Foo/Bar/NewObject.pm), он выдает такие предупреждения, как:
"set" не экспортируется модулем Foo :: Bar :: Object

Итак, мой вопрос: почему включение UNIVERSAL приводит к сбою функции Exporter при экспорте символов из модели «объектная база»?

Пример того, как выглядят модули, приведен ниже.

база объекта:

#!/usr/bin/perl -w  

use strict;  

package Foo::Bar::Object;

use Exporter;

our @ISA = qw(Exporter);

our @EXPORT = qw( new set get update create  );

... 

1;

второй модуль:

#!/usr/bin/perl -w  

use strict;  

package Foo::Bar::NewObject;

use Foo::Bar::Object qw( new set get );

... 

1;

1 Ответ

0 голосов
/ 08 апреля 2011

Я решил эту проблему, следуя тому, что @ikegami связывало в комментариях. Мне пришлось обернуть @EXPORT в блок BEGIN {}, и это, похоже, сработало.

Должно быть, модуль пытался использовать методы до их экспорта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...