Forums Neueste Beiträge
 

Namensräume in Perl 5

02/09/2009 - 11:14 von Gregor Goldbach | Report spam
Moin,

bei einer langwierigen Diskussion mit einem Kollegen über Namensràume in
Perl 5 kam unter anderem die Frage auf, wie man denn feststellen kann,
welche Namensràume es denn gibt.

In Class::Inspector fand ich einen interessanten Zugriff auf die
Symboltabelle. Im Wesentlichen führt dies zu folgendem Einzeiler:

perl -e 'print "$_" for sort keys %{::}'

Das gibt mir teilweise sehr interessante Namensràume aus. Insbesondere
die ersten drei, die mir 'od -ca' als \b, 022 und 030 berichtet. (z.B.
perl 5.8.8)

Was ist da los? :-D

Namensràume sind ja keine „Datentypen erster Klasse“. Welche Operationen
gibt es denn dafür? Mit 'package' kann ich den Namensraum setzen, mit
'caller' frage ich ab, aus welchem Namensraum ich aufgerufen werde. Aber
sonst?

An welchen Stellen kann ich da wühlen? Eine grobe Durchsicht von
perlguts und perlxs brachte auch keine Erkenntnisse, aber vielleicht
habe ich da auch etwas übersehen...

Dipl.-Inform. Gregor Goldbach (PKI Team)
Phone: +49 40 808077-621 Fax: +49 40 808077-556 Mail:goldbach@dfn-cert.de

DFN-CERT Services GmbH, https://www.dfn-cert.de, Phone +49 40 808077-555
Sitz / Register: Hamburg, AG Hamburg, HRB 88805, Ust-IdNr.: DE 232129737
Sachsenstraße 5, 20097 Hamburg/Germany, CEO: Dr. Klaus-Peter Kossakowski

DFN-PKI
https://www.pki.dfn.de/
 

Lesen sie die antworten

#1 Frank Seitz
02/09/2009 - 22:46 | Warnen spam
Gregor Goldbach wrote:

Namensràume sind ja keine „Datentypen erster Klasse“. Welche Operationen
gibt es denn dafür? Mit 'package' kann ich den Namensraum setzen, mit
'caller' frage ich ab, aus welchem Namensraum ich aufgerufen werde. Aber
sonst?



Das interessante an Packages sind die Symbole, die sie enthalten.
Diese sind definiert in speziellen Hashes, den sog. Stashes, die
wiederum auf sog. Typeglobs verweisen. Suche mal unter diesen Stichworten.

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

Ähnliche fragen