Процедура импорта по умолчанию для модулей экспорта не работает должным образом - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть следующий модуль Perl:

#!/usr/bin/env perl
package temp;
require Exporter;
our @ISA = ('Exporter');
our @EXPORT = qw(temp_print);
sub temp_print {
  my ($p) = @_ ;
  print "$p\n" ;
}

1;

Этот файл присутствует здесь: ./f/temp.pm Мой основной файл называется test.pl и выглядит так

#!/usr/bin/env perl
use strict;
use warnings;
use FindBin qw($Bin);
use lib $Bin;
use f::temp ;

temp_print("hi");

Когда я пытаюсь выполнить test.pl, кажется, что он не импортирует temp_print в основной пакет:

% ./test.pl
Undefined subroutine &main::temp_print called at ./test.pl line 8.

Я не уверен, что мне не хватает.Это кажется довольно простым, но не может понять, почему подпрограммы из моего пакета не импортируются.Не могли бы вы помочь мне понять, что не так?

1 Ответ

0 голосов
/ 20 февраля 2019

use Exporter ... является сокращением для

BEGIN {
    require Exporter;
    Exporter->import(...);
}

Говоря вместо этого require Exporter, вы пропускаете вызов методу Exporter * import.

Вы будететакже нужно разобраться с правильной проблемой с именем пакета / файла, на что ссылается комментарий zdim.

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