Sto cercando di capire quale modulo nel mio CGI :: Application sta caricando Moose. Ho tentato di sovraccaricare "require" ma non ho la sintassi corretta. Se qualcuno potesse ripulire il codice seguente sarei grato:Come faccio a capire quale modulo sta caricando Moose?
use strict;
use warnings;
use Carp qw//;
BEGIN {
*CORE::GLOBAL::require = sub (*) {
warn "Requiring $_[0] at: " . Carp::longmess();
CORE::require (@_);
};
}
In sostanza, il problema con questo script è che non è effettivamente caricando nulla. Quando CORE :: require (@) viene chiamato non "fa" nulla. Ho provato a passare il nome dello script direttamente usando $ [0], ma questo ha provocato lo stallo dello script fino al suo timeout.
NOTA: Lo script precedente è all'inizio del mio avvio di script
Ottima risposta! Mi piace particolarmente perché eviti di applicare patch a Moose.pm in qualsiasi modo. Invece si approfitta di una caratteristica raramente usata, ma molto interessante di '@ INC'. – daotoad
Se lo si inserisce in un metodo di importazione in un "wholoads.pm" e si verifica il primo argomento rispetto al metodo, è possibile utilizzarlo come "perl -Mwholoads = Moose yourscript.pl". Prenderò inoltre in considerazione l'utilizzo di Carp :: cluck() per ottenere stacktraces, poiché ciò riguarderebbe anche i moduli lazy-loading in fase di esecuzione. – phaylon
@phaylon: ottima idea. Anche se non sarei sorpreso se ci fosse un modulo che ha già fatto tutto questo su CPAN? Se non sembra un nuovo progetto! – draegtun