Re: Package bestimmen

Re: Package bestimmen

am 18.05.2007 08:59:44 von Ferry Bolhar

Frank Seitz:

> Oh ja, unter Perl 5.8.8 funktioniert es, wie ich es auch erwartet habe.
> Ich hatte unter Perl 5.8.6 gearbeitet, da kommt "main" raus.
> Dann handelt es sich wohl um einen Bug in der Version.

Ja. Die Funktion "m()" wird wohl in das Package "P" kompiliert,
aber das __PACKAGE__ Schlüsselwort vom Compiler falsch
übersetzt. Interessanterweise wird auch "main" ausgegeben, wenn
man test.pl in einem anderen Package kompiliert oder ein Block-
eval statt einem String-eval verwendet. Das ist bzw. war wirklich
ein Bug.

Schön, dass nicht nur immer ich auf seltsame Dinge stoße! ;-))
Ist übrigens schon in 5.8.7 behoben.

PS: Wen's interessiert: ich habe mir das Ganze mit dem Deparse-
Modul angesehen:

use B::Deparse;
...
print B::Deparse->new->codref2text(\&P::m);

gibt die kompilierte Methode aus.

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at