Ai entendu des codeurs Perl se plaindre depuis quelques années
Ce serait tellement cool si on avait des espaces de noms relatifs
Plus récemment, un collègue voulait quelque chose de similaire
"parce que import
en Python fait ça"
Encore une fois, c'était un problème de JFDI
relative.pm
Charge les modules avec un nom relatif au module courant, ou depuis une autre hiérarchie
Renvoie les noms complets des modules chargés
Peut aussi créer des aliases comme aliased
(à la demande d'Ovid)
Charger quelques modules
package BigApp::Report; use relative qw(Create Publish); # loads BigApp::Report::Create, BigApp::Report::Publish use relative qw(..::Utils); # loads BigApp::Utils
use relative -to => "Enterprise::Framework" => qw(Base Factory); # loads Enterprise::Framework::Base, Enterprise::Framework::Factory
En utilisant les noms renvoyés par import
use relative; my ($Maker, $Publisher) = import relative qw(Create Publish); my $report = $Maker->new; my $publisher = $Publisher->new;
my ($Base, $Factory) = import relative -to => "Enterprise::Framework" => qw(Base Factory); my $thing = $Factory->new;
En utilisant les aliases
use relative -aliased => qw(Create Publish); my $report = Create->new; my $publisher = Publish->new;
use relative -to => "Enterprise::Framework", -aliased => qw(Base Factory); my $thing = Factory->new;
Dans votre miroir CPAN
Fonctionne sur Perl 5.004