Thread Verstänisproblem in Sachen 'use' (7 answers)
Opened by Gast at 2008-05-20 17:49

sid burn
 2008-05-20 19:22
#110024 #110024
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
Auch wenn es (wie hier) in einer Referenz auf eine anonyme Subroutine steckt?

Ja...
Der Sourcecode wird vor der ausführung geparsed und in bytecode umgewandelt. Machst du ein BEGIN { ... } Block irgendwohin dann wird dieser Block immer direkt nach der Umwandlung zu Bytecode ausgeführt. Sprich immer noch zur Compilierzeit. Ein use Statement ist entspricht "fast" einem BEGIN { ... } Block um einem "require" Befehl.

Die Subroutine selber wird damit aber nicht ausgeführt.

Quote
Wie meinst du das?
Muß ich den Code der Subroutine in ein EOF (oder qq) packen?

Was soll ein EOF sein?

Du musst in diesem Fall ein String eval nehmen. Also soetwas.
Code: (dl )
eval "use ABC"


Allerdiengs würde ich auch lieber require nehmen da es anscheind genau das ist was du willst. Einziger Unterschied noch zu einem "use". Bei "use" wird noch automatisch die Subroutine "import" aus dem Package aufgerufen. Ein require macht das nicht. Hast du also ein Modul das Funktionen exportiert musst du danach noch Manuell "MODULNAME->import()" einmal aufrufen. Exportiert das Modul nichts oder möchtest du nicht in/ex-portieren kannst du den aufruf natürlich weg lassen.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Verstänisproblem in Sachen 'use'