Tout d'abord, je trouve utile d'utiliser des accolades enfermant pour contrôler la portée lors du bachotage de plusieurs paquets en un seul fichier. De plus, en incluant le paquet dans un bloc BEGIN, cela fonctionne plus comme un bon use
a été utilisé pour le charger, mais c'est surtout si je compile le paquet dans le script principal.
use Foo
est la même que BEGIN { require Foo; Foo->import }
.
Donc, vous avez deux choix:
- appel
BEGIN{ Foo::Whizzy->import; }
dans votre script principal.
- make
Foo::Bar::import
déclencher le Foo::Whizzy::import
sur le module appelant.
Dans Foo/Bar.h:
{ package Foo::Bar;
use Exporter qw(export_to_level);
# Special custom import. Not needed if you call Foo::Whizzy->import
sub import {
shift;
export_to_level('Foo::Whizzy', 1, @_);
}
# stuff
# stuff
}
{ package Foo::Whizzy;
require Exporter;
our @ISA=qw(Exporter);
our @EXPORT=qw(x);
use constant { x=>1 };
}
1; # return true
Dans votre code principal:
use Foo::Bar;
# If you don't do a custom import for Foo::Bar, add this line:
BEGIN { Foo::Whizzy->import };
thx à tous - le consensus semble - utiliser 2 fichiers J'étais juste paresseux et je promets de dire Foo pas foo – pm100
Dans ce cas, je vais vous upvote! :) – Ether