Thread caller() ueberlisten (6 answers)
Opened by betterworld at 2005-07-26 02:23

betterworld
 2005-07-26 22:16
#56688 #56688
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Mit goto kann ich zwar eine Funktion in caller() unsichtbar machen, aber ich wuesste nicht, wie ich das dazu nuetzen kann, eine beliebige Funktion einzufuegen...

sri: Ich weiß nicht ganz, wie ich es anstellen könnte, caller() zu überladen. So habe ich es probiert:
Code: (dl )
1
2
$ perl -wle 'sub CORE::caller {print "foo"} caller'
Useless use of caller in void context at -e line 1.
Scheint also nicht so ganz zu klappen. Vermutlich greift hier der Abschnitt aus perlsub:
Quote
Finally, some built-ins (e.g. "exists" or "grep") can't be overridden.
Selbst wenn ich caller() überladen könnte, wäre das eine recht haarige Angelegenheit. Nachdem der Ersatz-caller aufgerufen wird, müsste er sofort wieder das Original herstellen, damit weitere, von NEXT aufgerufene, Subroutinen nicht durcheinander kommen.
Update: mit CORE::GLOBAL::caller kann man es tatsaechlich ueberladen, wie pq mir gerade im IRC dankenswerterweise gesagt hat.

Naja, aber danke fuer die Antworten.\n\n

<!--EDIT|betterworld|1122407602-->

View full thread caller() ueberlisten