Wie finde ich heraus, welches Modul Moose lädt?

8

Ich versuche herauszufinden, welches Modul in meiner CGI :: Application Moose lädt. Ich habe versucht, "require" zu überladen, aber die Syntax scheint nicht ganz richtig zu sein. Wenn jemand den folgenden Code aufräumen könnte, würde ich es begrüßen:

%Vor%

Das Problem mit diesem Skript besteht im Grunde darin, dass es nichts wirklich lädt. Wenn CORE :: require (@ ) aufgerufen wird, tut "nichts". Ich habe versucht, den Skriptnamen direkt mit $ [0] zu übergeben, aber das hat nur dazu geführt, dass das Skript so lange blockiert ist, bis es abgelaufen ist.

HINWEIS: Das obige Skript befindet sich am Anfang meines Startup-Skripts

    
Jeffrey Fuller 28.09.2010, 17:26
quelle

3 Antworten

16

Hows über:

%Vor%

Dies funktioniert, weil Unterroutinenreferenzen in @INC aufgerufen werden und Coderef und Dateiname als Argumente übergeben werden. Siehe require perldoc:

Wie von phaylon erwähnt, können Sie auch Devel :: TraceLoad , um eine Zusammenfassung aller Module zu erhalten, die geladen wurden, während Ihre Anwendung lief (und welche Zeile der Datei sie geladen hat) mit

%Vor%     
draegtun 28.09.2010, 17:50
quelle
5

Sie können herausfinden, wer ein bestimmtes Modul lädt, indem Sie einige Zeilen am Anfang des Moduls einfügen, um den "Anrufer" zu erhalten. Finde Moose.pm in deinem Bibliotheksbaum ( perl -mMoose -wle'print $INC{"Moose.pm"}' , und bearbeite ihn in:

%Vor%

Das ist schnell und dreckig, aber es klingt als wäre es alles was du brauchst. (Vergiss nicht, die Änderungen an Moose.pm zu ändern, wenn du fertig bist!)

    
Ether 28.09.2010 17:34
quelle
4

In * Nix:

%Vor%

Das Konzept wäre das gleiche in Windows.

Sie sollten:

%Vor%     
Axeman 28.09.2010 18:02
quelle

Tags und Links