Tengo un problema de Perl: importación de símbolos, dependiendo de los elementos de ruta en @INC
y la instrucción use
.perl: Exportador no funciona con elementos de ruta en la instrucción `use`
Si pongo la ruta completa en @INC
, la importación funciona. Si una parte de la ruta se encuentra en la declaración use
se ejecuta el módulo de importación, pero la importación tiene que ser hecho de manera explícita:
########################################
# @INC has: "D:/plu/lib/"
#------------------------------------------------
# Exporting file is here: "D:/plu/lib/impex/ex.pm"
#
use strict;
use warnings;
package ex;
use Exporter;
our @ISA = 'Exporter';
our @EXPORT = qw(fnQuark);
sub fnQuark { print "functional quark\n"; }
print "Executing module 'ex'\n";
1;
#------------------------------------------------
# Importing file, example 1, is here: "D:/plu/lib/impex/imp.pl"
#
use strict;
use warnings;
package imp;
use impex::ex;
ex->import(@ex::EXPORT); # removing this line makes fnQuark unavailable!
# Why is this necessary, 'ex.pm' being an Exporter?
fnQuark();
#------------------------------------------------
# Importing file, example 2, is here: "D:/plu/lib/impex/imp2.pl"
#
use strict;
use warnings;
package imp2;
use lib 'D:/plu/lib/impex';
use ex;
fnQuark(); # works without explicit import
#-------------------------------------------------
¿Cuál es mi error?
Gracias por la respuesta rápida. Pero no entiendo por qué no tuve este problema antes. Tengo tantos módulos, e. gramo. 'FotoArchive.pm' en lib/Foto, con el nombre del paquete FotoArchive y Foto no en la ruta @INC. ¿Por qué eso no causa los mismos problemas cuando los invoco a través de Foto :: FotoArchive? - Ah, empiezo a ver, porque no exportan nada. ¡Así que me libré de mi error durante tanto tiempo! ¡Gracias! – Sadko