Ho un modulo chiamato Helpers.pm
:Perché viene visualizzato il messaggio di errore "Sottoprogramma non definito" quando si chiama una funzione da un modulo?
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;
un chiamarlo nello script:
#!/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;
e non ottengo messaggi d'errore. Ma quando ho messo il modulo nella directory TestDir
un modificare lo script come questo:
#!/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;
ottengo questo errore-messaggio:
Undefined subroutine &main::my_function called at ./perl.pl line 10.
Perché ricevo questo errore-messaggio?
+1: questo è molto probabilmente il problema. Tutto il resto sembra essere stato cambiato correttamente. – Borodin