Vous savez comment Moose allume automatiquement J'ai suivi là où l'orose est-ce, dans Cependant, je ne peux pas comprendre un moyen d'étendre cette méthode d'importation dans une voie d'orignal-ish. p>
Comment dois-je gérer cela? p>
strict code> et avertissements code> pendant l'importation? Je souhaite étendre ce comportement en allumant autodie code> et Utiliser la fonctionnalité ': 5.10' code> dans mes classes de mon orose. P>
Moose :: Exporter Code>, qui assemble une importation de personnalisée code> SUB pour l'orignal qui appelle strict-> importation code> et avertissements-> importer code> pour la classe d'appel. p>
4 Réponses :
Vous devez définir une sous-intitulée Importer dans votre colis et importer toutes les autres choses là-bas.
Un exemple de moderne :: Perl (un autre module de stratégie que vous pourriez regarder): P>
use 5.010_000;
use strict;
use warnings;
use mro ();
use feature ();
sub import {
warnings->import();
strict->import();
feature->import( ':5.10' );
mro::set_mro( scalar caller(), 'c3' );
}
Mon approche résout le problème à l'envers.
Pourquoi ne pas utiliser Toolset pour créer un groupe de Le code doit ressembler à quelque chose comme: p> Je n'ai pas testé cela. Franchement, je viens de trouver Utiliser les instructions code> qui inclut Moose code>, ainsi que vos pragmas supplémentaires? p> Toolset Code> Il y a quelques jours, et je n'ai pas eu la chance de l'essayer encore. FWIW, les critiques sont positives. P> p>
Merci pour la suggestion. Je n'avais pas entendu parler de l'outil d'outils; Je l'enquête maintenant.
Comme il existe de nombreuses façons, un module peut exporter ses fonctions dans l'espace de noms code> user code>, vous devrez peut-être faire creuser un code de code afin de mettre en œuvre chaque bibliothèque souhaitée. Ce que vous demandez n'est rien de spécifique à Moose, vous pouvez donc écrire votre meilleur module de pratique de votre entreprise qui configurera un groupe de normes pour que vous puissiez travailler avec, par exemple
package OurCompany::BestPractices::V1;
use strict;
use warnings;
use feature (':5.10');
require Fatal;
require Moose;
# Required for straight implementation of autodie code
our @ISA;
push @ISA, qw(
Fatal
);
sub import {
my $caller = caller;
strict->import;
warnings->import;
feature->import( ':5.10' );
Moose->import ({into => $caller});
#autodie implementation copied from autodie source
splice(@_,1,0,Fatal::LEXICAL_TAG);
goto &Fatal::import;
}
1;
J'ai fini par utiliser une variante de cette idée.
ceci peut ensuite être utilisé comme p> < Pré> xxx pré> p> Moose :: Exportateur Code> vous permettra de définir une méthode Custom Importer code> pour une classe de sucre que vous utilisez. Moosex :: Poe Code> Utilisez une version de cela pendant des années, mais le fait dans ce que je considère une mode "pirate". En regardant la documentation de Moose :: exportateur code> Les éléments suivants doivent être à peu près ce que vous demandez
Merci! Je vais donner cela un coup de feu plus tard aujourd'hui et voir si je peux lui donner un sens.