To late to run INIT Block
Knut Schwarzer
- perl
0 Christian Kruse0 Knut
Hallo,
Ich habe das Problem, dass ich bei einem größeren Perl Projekt immer die obige Fehlermeldung erhalte. Warscheinliche Ursache ist die, dass das zugehörige Modul in einigen Situationen (nicht immer) von mehreren anderen Modulen zugeladen wird. Ab dem zweiten mkommt dann diese Meldung. Kann ich die Ausführung des INI-Blocks irgendwie unterdrücken, wenn er schon geladen ist oder kann ich überprüfen, ob ein Modul schon geladen ist und in diesem Fall auf ein erneutes Laden verzichten? Oder hat jemand noch eine andere Idee um den Fehler zu umgehen?
Vielen Dank im Voraus
Knut
Hallo Knut,
Ich habe das Problem, dass ich bei einem
größeren Perl Projekt immer die obige
Fehlermeldung erhalte. Warscheinliche Ursache
ist die, dass das zugehörige Modul in einigen
Situationen (nicht immer) von mehreren anderen
Modulen zugeladen wird. Ab dem zweiten mkommt
dann diese Meldung.
Das liegt wahrscheinlich daran, dass Perl zu der
Phase, zu der das Modul geladen wird, die
INIT-Bloecke bereits abgehandelt wurden. Perl
compiliert Phasenweise: zuerst wird alles geladen,
was notwendig ist, um den main-Block zu
uebersetzen. Dann werden, bei Bedarf, weitere
Module hinzugeladen. Zu dem Zeitpunkt ist die
INIT-Phase aber bereits abgeschlossen. Deshalb die
Warnung.
Kann ich die Ausführung des INI-Blocks
irgendwie unterdrücken, wenn er schon geladen
ist
Wenn das Modul bereits geladen wurde, wird es kein
weiteres mal geladen. Der INIT-Block wird auch
kein weiteres mal ausgefuehrt.
oder kann ich überprüfen, ob ein Modul
schon geladen ist und in diesem Fall auf ein
erneutes Laden verzichten?
Das macht Perl automatisch :)
Oder hat jemand noch eine andere Idee um den
Fehler zu umgehen?
Wandle den INIT-Block in einen BEGIN-Block um.
INIT ist in den meisten Faellen nicht noetig und
kann Problemlos in einen BEGIN-Block verwandelt
werden.
Gruesse,
CK
Vielen Dank für den Tip. Klingt irgendwie logisch.
Ich werds mal testen.
Viele Grüße
Knut