use mehrfach aufrufen
Cruz
- perl
Hallo Perlers,
ich habe ein Frage zu dem use Kommando. Z.b:
use MIME::Lite
Ich habe diese Zeile in eine Subroutine gepackt, da ich nicht möchte, dass das Modul bei jedem Aufruf des Scriptes eingebunden werden soll. Es soll nur dann eingebunden werden, wenn auch die entsprechende Routine
aufgerufen wird. Ich möchte damit etwas Kompilierzeit sparen.
Was passiert aber, wenn diese Subroutine mit use drin mehrfach hintereinander aufgerufen wird? Wird dann das MIME::Lite Module mehrfach kompiliert, oder versteht der Perl Interpreter das und macht es nur beim ersten mal?
Gruß und Dank
Cruz
Hi,
Ich habe diese Zeile in eine Subroutine gepackt, da ich nicht möchte, dass das Modul bei jedem Aufruf des Scriptes eingebunden werden soll. Es soll nur dann eingebunden werden, wenn auch die entsprechende Routine
aufgerufen wird.
schade eigentlich - wird's nämlich trotzdem.
Ich möchte damit etwas Kompilierzeit sparen.
Eine Kompilierung findet _vor_ der Ausführung statt.
Cheatah
OK danke!
schade eigentlich - wird's nämlich trotzdem.
Eien Vorteil sehe ich trotzdem noch die use Zeile in die Subroutine zu packen. Ich weiss dann nämlich genau, dass das Modul mit dieser Routine verknüpft ist. Falls ich mal die Routine rausschmeisse, muss ich nicht dran denken auch das Modul zu entfernen.
Gruß,
Cruz
Hi,
schade eigentlich - wird's nämlich trotzdem.
Eien Vorteil sehe ich trotzdem noch die use Zeile in die Subroutine zu packen. Ich weiss dann nämlich genau, dass das Modul mit dieser Routine verknüpft ist. Falls ich mal die Routine rausschmeisse, muss ich nicht dran denken auch das Modul zu entfernen.
Du hast dann aber keinen Überblick mehr über die Abhängigkeiten dieses speziellen Scripts.
Cheatah
Hi,
schade eigentlich - wird's nämlich trotzdem.
Eien Vorteil sehe ich trotzdem noch die use Zeile in die Subroutine zu packen. Ich weiss dann nämlich genau, dass das Modul mit dieser Routine verknüpft ist. Falls ich mal die Routine rausschmeisse, muss ich nicht dran denken auch das Modul zu entfernen.Du hast dann aber keinen Überblick mehr über die Abhängigkeiten dieses speziellen Scripts.
Genau. Also ich habe den
use...
require...
Kram _immer_ in der Hauptdatei.
... fals ich hier mal meinen Senf dazu geben darf *g
/Rolf
Hallo Perlers,
hallo Cruz,
ich habe ein Frage zu dem use Kommando. Z.b:
use Module ();
ist äquivalent zu
BEGIN { require Module }
d.h. use entspricht require mit dem Unterschied, daß es zur Compilezeit ausgeführt wird.
require wird zur Ausführungszeit ausgeführt. Wird require mehrfach mit einem identischen Namen aufgerufen, so wird es von Perl nur das erste Mal beachtet.
Kurz und Knapp, rufe doch Deine Subroutine mit require auf. Die wird dann das erste Mal geladen und compiliert das darin enthaltene use Mime::Lite.
Grüße Oesi
Ich weiß, dass ich nichts weiß...
Hallo oesi50,
use Module ();
ist äquivalent zu
BEGIN { require Module }
Imports some semantics into the current package from the named module, generally by
aliasing certain subroutine or variable names into your package. It is exactly
equivalent to
BEGIN { require Module; import Module LIST; }
except that Module must be a bareword.
d.h. use entspricht require mit dem Unterschied, daß es zur Compilezeit ausgeführt wird.
Nein.
Grüße,
CK
use Module ();
ist äquivalent zu
BEGIN { require Module }
Imports some semantics into the current package from the named module, generally by
aliasing certain subroutine or variable names into your package. It is exactly
equivalent toBEGIN { require Module; import Module LIST; }
except that Module must be a bareword.
Du hast nicht genau gelesen was Oesi schrub. Er führte das Beispiel an:
If you don't want your namespace altered, explicitly supply an empty list:
use Module ();
That is exactly equivalent to
BEGIN { require Module }
d.h. use entspricht require mit dem Unterschied, daß es zur Compilezeit ausgeführt wird.
Nein.
Mit Klammer schon.
Struppi.
Hallo Christian,
d.h. use entspricht require mit dem Unterschied, daß es zur Compilezeit ausgeführt wird.
Nein.
Stimmt. Aber ich glaube, damit kann Cruz leben.
Grüße Oesi
hallo,
falls du apache verwendest könntest du mod_perl verwenden weil:
[zitat]
mod_perl gives you a persistent Perl interpreter embedded in your web server. This lets you avoid the overhead of starting an external interpreter and avoids the penalty of Perl start-up time, giving you super-fast dynamic content.
[/zitat]
http://perl.apache.org/
gruss