Как использовать% EXPORT_TAGS - PullRequest
3 голосов
/ 05 июля 2010

У меня есть модуль, похожий на этот, в "lib", называемый Fool.pm, который основан на исходном коде CGI.pm (так как это был первый модуль, о котором я подумал, когда я думал об экспорте тегов):

package Fool;
require Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw/raspberry/;
%EXPORT_TAGS = (
    ':all' => \@EXPORT_OK,
);
1;

и такой тестовый скрипт:

use lib 'lib';
use Fool qw/:all/;

Я пытаюсь запустить скрипт и получить следующее:

perl fool.pl
"all" is not defined in %Fool::EXPORT_TAGS at fool.pl line 2
  main::BEGIN() called at lib/Fool.pm line 2
  eval {...} called at lib/Fool.pm line 2
Can't continue after import errors at fool.pl line 2
BEGIN failed--compilation aborted at fool.pl line 2.

Я не вижу, в чем здесь ошибка, кто-нибудь может помочь?

1 Ответ

1 голос
/ 05 июля 2010

В вашем ключе не должно быть двоеточия.Кроме того, я думаю, что переменные должны быть объявлены our, чтобы они были доступны для Exporter:

our @ISA = qw(Exporter);
our @EXPORT_OK = qw/raspberry/;

our %EXPORT_TAGS = (
    'all' => \@EXPORT_OK,
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...