que tienen un módulo denominado Helpers.pm
:¿Por qué aparece el mensaje de error "Subrutina no definida" cuando llamo a una función desde un módulo?
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;
una llamada en el guión:
#!/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;
y me da ningún error-mensajes. Pero cuando pongo el módulo en el directorio TestDir
un modifique el script como el siguiente:
#!/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;
consigo este error mensaje:
Undefined subroutine &main::my_function called at ./perl.pl line 10.
¿Por qué aparece este mensaje-error?
+1: Este es muy probable el problema. Todo lo demás parece haber sido cambiado correctamente. – Borodin