Почему я получаю сообщение об ошибке «Неопределенная подпрограмма» при вызове функции из модуля?

У меня есть модуль с именем Helpers.pm:

use warnings;
use 5.012;

package Helpers;
use Exporter qw(import);
our @EXPORT_OK = qw(my_function);

sub my_function {
    return { one => 1, two => 2 };
}

1;

вызов его в сценарии:

#!/usr/bin/env perl
use warnings;
use 5.012;
use Data::Dumper;
use FindBin qw($RealBin);

use lib $RealBin;
use Helpers qw(my_function);

my $ref = my_function();
say Dumper $ref;

и я не получаю сообщений об ошибках. Но когда я помещаю модуль в каталог TestDir, изменяю скрипт следующим образом:

#!/usr/bin/env perl
use warnings;
use 5.012;
use Data::Dumper;
use FindBin qw($RealBin);

use lib $RealBin;
use TestDir::Helpers qw(my_function);

my $ref = my_function();
say Dumper $ref;

Я получаю это сообщение об ошибке:

Undefined subroutine &main::my_function called at ./perl.pl line 10.

Почему я получаю это сообщение об ошибке?

8
задан sid_com 12 March 2012 в 18:38
поделиться