Thread caller() ueberlisten
(6 answers)
Opened by betterworld at 2005-07-26 02:23
Hallo,
gibt es eine Möglichkeit, das aktuelle Paket und die aktuelle Subroutine auf einen zur Kompilierzeit unbekannten Wert (sprich eine Variable) zu setzen, mit der Absicht, dass caller() diese Werte zurueckgibt? Genauer gesagt geht es mir darum, einem beliebigen Paket zur Laufzeit eine Subroutine zu injizieren, die NEXT verwendet, wie das untenstehende Beispiel zeigt: Code: (dl
)
1 use NEXT; Dieser Code funktioniert nicht wie gewuenscht, weil NEXT die aufrufende Funktion mit caller(1) bestimmt, und das ergibt leider nicht ${paket}::function, sondern das den vollqualifizierten Namen der Subroutine, in dem der obige Code steht. Man kann das auch mit dem folgenden Script noch einmal ueberpruefen: Code: (dl
)
1 sub printcaller { Die Ausgabe ist main::_ _ANON_ _, aber ich moechte gerne, dass es testpaket::function ist. Eine moegliche Loesung waere die Benutzung von eval, aber das will ich eigentlich nicht: Code: (dl
)
1 sub printcaller { Weiß jemand eine andere Lösung? Danke. Lieblingsmodule: IPC::System::Simple, Path::Class
|