J'essaie de savoir quel module de mon application CGI :: Application charge Moose. J'ai essayé de surcharger "require" mais je ne semble pas avoir la syntaxe tout à fait raison. Si quelqu'un pouvait nettoyer le code suivant je l'apprécie:Comment savoir quel module charge Moose?
use strict;
use warnings;
use Carp qw//;
BEGIN {
*CORE::GLOBAL::require = sub (*) {
warn "Requiring $_[0] at: " . Carp::longmess();
CORE::require (@_);
};
}
Fondamentalement, le problème avec ce script est qu'il ne fait rien charger. Quand CORE :: require (@) est appelé, il ne "fait" rien. J'ai essayé de lui passer directement le nom du script en utilisant $ [0], mais cela a juste abouti à la supercherie du script jusqu'à ce que le délai expire.
REMARQUE: Le script ci-dessus est au début de mon script de démarrage
Excellente réponse! J'aime particulièrement celui-ci, car vous évitez de patcher Moose.pm de quelque façon que ce soit. Au lieu de cela, vous profitez d'une fonctionnalité rarement utilisée, mais très cool de '@ INC '. – daotoad
Si vous mettez cela dans une méthode d'import dans un 'wholoads.pm' et vérifiez le premier argument de la méthode, vous pouvez l'utiliser comme 'perl -Mwholoads = Moose yourscript.pl'. J'envisagerais aussi d'utiliser Carp :: cluck() pour obtenir des stacktraces, car cela couvrirait aussi les modules de chargement paresseux à l'exécution. – phaylon
@phaylon: Bonne idée. Bien que je ne serais pas surpris s'il y avait un module qui a déjà fait tout cela sur CPAN? Sinon, cela ressemble à un nouveau projet! – draegtun