QuoteAuch 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.
QuoteWie 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.
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