Arbeiten mit B::Deparse
am 19.07.2007 11:29:23 von Ferry Bolhar
Hallo,
ich hätte zwei Fragen bzgl. B::Deparse:
Man kann ja mit
use B::Deparse;
print 'B::Deparse'::->new->coderef2text();
die durch die Codereferenz CV angegebene Subroutine
deparsen. Funktioniert prima.
Gibt es aber auch eine Möglichkeit, den Hauptcode auf
diese Art zu deparsen? Ich habe es mit
use B;
use B::Deparse;
my $main_cv = B::SV::object_2svref(B::main_cv);
print 'B::Deparse'->new->coderef2text($main_cv);
probiert - ich bekomme keinen Fehler, aber auch keine
Ausgabe!
Zweite Frage: gibt es eine Möglichkeit, sich mit Deparse
auch BEGIN/CHECK/INIT/END-Blöcke anzusehen? B
stellt dafür zwar die Funktionen B::begin_av/check_av/init_av
/end_av zur Verfügung, die Zugriff auf die betreffenden Arrays
gestatten, in denen die CVs dieser Blöcke abgelegt werden,
aber die von diesen Funktionen zurückgelieferten Objekte
sind alle vom Typ B::SPECIAL, hinter dem nichts mehr steckt
(man kann ihn z.B. nicht mehr mit B::SV::object_2svref in eine
Referenz konvertieren).
Achja: Perl 5.8.6 auf einer Fedora-Linux-Kiste.
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: Arbeiten mit B::Deparse
am 20.07.2007 02:48:04 von David Haller
On Thu, 19 Jul 2007 11:29:23 +0200, Ferry Bolhar wrote:
> Gibt es aber auch eine Möglichkeit, den Hauptcode auf
> diese Art zu deparsen? Ich habe es mit
>
> use B;
> use B::Deparse;
> my $main_cv = B::SV::object_2svref(B::main_cv);
> print 'B::Deparse'->new->coderef2text($main_cv);
Suchst du evtl.
perl -MO=Deparse foo.pl
bzw.
use O ("Deparse");
Siehe: perldoc O und perldoc B::Deparse, auch in letzterem steht die
Kommandozeilenversion in der Synopsis...
-dnh
--
SIG kill(ed)
Re: Arbeiten mit B::Deparse
am 20.07.2007 17:30:27 von Ferry Bolhar
David Haller:
> Suchst du evtl.
>
> use O ("Deparse");
>
> Siehe: perldoc O und perldoc B::Deparse, auch in letzterem steht die
> Kommandozeilenversion in der Synopsis...
Ja, das ist schon mal super! Damit kann ich mir den Code
meines eben ablaufenden Skripts ansehen.
Frage: kann ich so auch irgendwie den Hauptcode eines
anderen Moduls, das mit "require" oder "do" geladen wurde,
untersuchen?
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: Arbeiten mit B::Deparse
am 20.07.2007 22:11:04 von David Haller
On Fri, 20 Jul 2007 17:30:27 +0200, Ferry Bolhar wrote:
> David Haller:
>
>> Suchst du evtl.
>>
>> use O ("Deparse");
[..]
> Frage: kann ich so auch irgendwie den Hauptcode eines
> anderen Moduls, das mit "require" oder "do" geladen wurde,
> untersuchen?
use O ("Deparse","-fABSOLUTER_DATEINAME_DES_MODULS");
HTH,
-dnh
--
Microsoft, what do you want to crash today?
Re: Arbeiten mit B::Deparse
am 23.07.2007 10:42:31 von Ferry Bolhar
David Haller:
>> Frage: kann ich so auch irgendwie den Hauptcode eines
>> anderen Moduls, das mit "require" oder "do" geladen wurde,
>> untersuchen?
>
> use O ("Deparse","-fABSOLUTER_DATEINAME_DES_MODULS");
Danke! Da hätte ich wirklich auch selbst draufkommen können.
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at