EDIT Désolé pour la confusion, voici ma question mise à jour.importer un sous-programme de bibliothèque en utilisant FindBin en perl
J'utilise FindBin dans mon script perl comme ceci:
use FindBin qw($Bin);
use lib "$Bin/../lib";
use multi_lib qw(say_hello_world);
Cela fonctionne:
multi_lib::say_hello_world();
mais cela ne fait pas:
say_hello_world();
EDIT 2
Voici comment multi_lib.pm ressemble:
package multi_lib;
use strict;
use warnings;
use 5.010;
require Exporter;
my @ISA = qw(Exporter); # removing `my` causes an error!
my @EXPORT_OK = qw(say_hello_world); # removing `my` causes an error!
sub say_hello_world {
say "hello world!";
}
P.S. Je n'ai aucune idée de ce que signifie @ISA
et si l'ajout du my
est OK ... J'ai suivi le preldoc pour Exporter
.
Edit 3 Je pense que je l'ai résolu en déplaçant @EXPORT_OK
avant use strict
. Je suis habitué à mettre use strict
au début de mes scripts mais je suppose que ce n'est pas la façon d'y aller (?). Quoi qu'il en soit, cela fonctionne:
use Exporter 'import';
@EXPORT_OK = qw(say_hello_world);
use strict;
...
Je voudrais encore apprécier quelques explications quant à ce qui se passe ici exactement et quelle est la méthode recommandée pour l'exportation des sous-routines (comme je l'ai fait?).
est-ce que say_hello_world est exporté de multi_lib? – DVK
oui, je le pense. voir éditer 2. –