Lexikalische Symboltabellen durchgehen
Lexikalische Symboltabellen durchgehen
am 11.12.2006 15:26:05 von Ferry Bolhar
Hallo,
ähnlich, wie man mit
foreach my $glob (sort keys %main::) {
... # $glob enthaelt nun aktuellen Typeglob
}
die Symboltabelle des 'main'-Packages Element für Element
durchgehen kann, würde ich soetwas gerne mit den Tabellen,
die lexikalische Variable enthalten (d.h., die Scratch Pads von
Scopes bzw. Funktionen), machen. Aber ich finde - zumindest
im Perl-Core - nichts Equivalentes, das Stashes und Typeglobs
entsprechend würde.
Habe ich etwas übersehen? Oder kennt jemand vielleicht ein
Modul, das diese Möglichkeit (ev. mit Hilfe von XS) bietet?
PadWalker ist es - trotz seines klingenden Namens - leider
nicht.
Danke & LG,
Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: Lexikalische Symboltabellen durchgehen
am 11.12.2006 15:40:17 von Frank Seitz
Ferry Bolhar wrote:
> ähnlich, wie man mit
>
> foreach my $glob (sort keys %main::) {
> ... # $glob enthaelt nun aktuellen Typeglob
> }
>
> die Symboltabelle des 'main'-Packages Element für Element
> durchgehen kann, würde ich soetwas gerne mit den Tabellen,
> die lexikalische Variable enthalten (d.h., die Scratch Pads von
> Scopes bzw. Funktionen), machen. Aber ich finde - zumindest
> im Perl-Core - nichts Equivalentes, das Stashes und Typeglobs
> entsprechend würde.
>
> Habe ich etwas übersehen? Oder kennt jemand vielleicht ein
> Modul, das diese Möglichkeit (ev. mit Hilfe von XS) bietet?
> PadWalker ist es - trotz seines klingenden Namens - leider
> nicht.
Wozu brauchst Du das?
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Lexikalische Symboltabellen durchgehen
am 11.12.2006 18:50:30 von Ferry Bolhar
Frank Seitz:
>> Habe ich etwas übersehen? Oder kennt jemand vielleicht ein
>> Modul, das diese Möglichkeit (ev. mit Hilfe von XS) bietet?
>> PadWalker ist es - trotz seines klingenden Namens - leider
>> nicht.
>
> Wozu brauchst Du das?
Wozu braucht man Stashes? Primär zum Debuggen bzw.
zum Ansehen des Inhaltes von Scratch Pads.
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: Lexikalische Symboltabellen durchgehen
am 11.12.2006 19:00:19 von Frank Seitz
Ferry Bolhar wrote:
> Wozu braucht man Stashes?
Stashes repräsentieren den öffentlichen Namensraum
eines Pakets oder einer Klasse. Von daher ist es
nicht nur zu Debugging-Zwecken interessant, da
reinzuschauen. Stichwort: Reflection.
Bei lexikalischen Variablen fällt mir spontan
kein richtiger Anwendungsfall ein.
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Lexikalische Symboltabellen durchgehen
am 12.12.2006 10:42:29 von Ferry Bolhar
Frank Seitz:
> Bei lexikalischen Variablen fällt mir spontan
> kein richtiger Anwendungsfall ein.
Na gut - sagen wir ganz einfach mal, dass es mich
interessieren würde, mir den Scratch Pad eines
Scopes während des Laufes eines Skripts zu einem
bestimmten Zeitpunkt anzusehen.
Aber die eher schwache Reaktion auf meine Frage
läßt mich bereits vermuten, dass es so etwas nicht
geben dürfte.
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: Lexikalische Symboltabellen durchgehen
am 12.12.2006 11:05:06 von Robert Sedlacek
Ferry Bolhar wrote
> Habe ich etwas übersehen? Oder kennt jemand vielleicht ein
> Modul, das diese Möglichkeit (ev. mit Hilfe von XS) bietet?
> PadWalker ist es - trotz seines klingenden Namens - leider
> nicht.
Meinst du so etwas wie B::LexInfo?
gr.,
Robert
--
Ordinary morality is only for ordinary people.
-- Aleister Crowley
Re: Lexikalische Symboltabellen durchgehen
am 12.12.2006 16:02:09 von Ingo Menger
Ferry Bolhar schrieb:
> Frank Seitz:
>
> > Bei lexikalischen Variablen fällt mir spontan
> > kein richtiger Anwendungsfall ein.
>
> Na gut - sagen wir ganz einfach mal, dass es mich
> interessieren würde, mir den Scratch Pad eines
> Scopes während des Laufes eines Skripts zu einem
> bestimmten Zeitpunkt anzusehen.
Du erwartest hoffentlich nicht, dort die Namen von lokalen Variablen zu
finden?
Re: Lexikalische Symboltabellen durchgehen
am 13.12.2006 18:34:55 von Ferry Bolhar
Ingo Menger:
>> Na gut - sagen wir ganz einfach mal, dass es mich
>> interessieren würde, mir den Scratch Pad eines
>> Scopes während des Laufes eines Skripts zu einem
>> bestimmten Zeitpunkt anzusehen.
>
> Du erwartest hoffentlich nicht, dort die Namen von lokalen Variablen
> zu finden?
Schon. Soviel ich verstande habe, hat jeder Scope ein
Scratch Pad. Dieses beinhaltet eine Padlist, ein Array
mit zwei Elementen, die ihrerseits Arrays sind. Das erste
dieser Elemente wird häufig als "Name List" bezeichnet,
seine Elemente sind SVPV's mit den Variablennamen.
Das zweite Element ist die "Value List", hier sind - an
selber Stelle (d.h., mit dem selben Index) - alle Variablen-
werte abgelegt. Wird eine Funktion rekursiv aufgerufen,
wird für jede Rekursion eine weitere Value List hinzugefügt.
So hatte ich es verstanden. Was ist daran falsch?
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: Lexikalische Symboltabellen durchgehen
am 14.12.2006 13:59:20 von Ferry Bolhar
Robert Sedlacek:
> Meinst du so etwas wie B::LexInfo?
Ja - aber das funktioniert nur mit Padlists von einer Funktion (cvlexinfo)
oder allen Funktionen eines Paketes (stash_cvlexinfo). Ist schon mal
super, vielen Dank, aber was gebe ich an, wenn ich die Padlist der
"main"-Funktion (des Hautprogramms) oder eines nicht benannten
Scopes (z.B. eval {..}) habe möchte? In der Doku steht leider nichts
darüber drin.
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at