flury: Module erst in Funktion laden?

Hi mal wieder,

ich hab nur eine kleine Stilfrage heute...
Ich arbeite hauptsächlich mit Funktionen, so dass ich im Hauptprogramm quasi nur Funktionsaufrufe habe. Nun ist meine Frage, ob ihr das einbinden von Modulen wie z.B. DBI,CGI,ENCODE,Net::smtp,... immer am anfangen eures Scriptes macht oder erst in der entsprechenden Funktion.

Ich bin da etwas unschlüssig, da auf der einen Seite für das einbinden in der Funktion spricht, dass es sehr übersichtlich ist und ich solche Funktionen einfach kopieren kann in andere Programme, ohne etwas zu vergessen. Was natürlich dagegen spricht ist, wenn ich z.B. in einem Programm mehrere Funktionen haben die das gleiche Modul benutzen.

Was meint ihr?

ciao,
Flury

  1. ich hab nur eine kleine Stilfrage heute...
    Ich arbeite hauptsächlich mit Funktionen, so dass ich im Hauptprogramm quasi nur Funktionsaufrufe habe. Nun ist meine Frage, ob ihr das einbinden von Modulen wie z.B. DBI,CGI,ENCODE,Net::smtp,... immer am anfangen eures Scriptes macht oder erst in der entsprechenden Funktion.

    Kommmt drauf an.

    Wenn du sie mit use einbindest am Anfang, da use sowieso immer während der Übersetzungphase ausgeführt wird, d.h. es macht keinen Unterschied an welcher Stelle du use Irgendwas schreibst, das Modul wird immer eingebunden, während require erst dann ausgeführt wird, wenn es explizit aufgerufen wird. Das ist nützlich, wenn du Module einbindest die nicht immer benötigt werden.

    worüber du dir keine Gedanken machen musst, ist ob use mehrfach ausgeführt wird, es wird für ein Modul immer nur einmal ausgeführt. Du kannst im Hash %INC nachsehen welche Module eingebunden wurden.

    Struppi.