devel::symdump(3)

NAME

Devel::Symdump - dump symbol names or the symbol table

SYNOPSIS

# Constructor
require Devel::Symdump;
@packs = qw(some_package another_package);
$obj = Devel::Symdump->new(@packs);        # no recursion
$obj  = Devel::Symdump->rnew(@packs);       # with recursion
# Methods
@array = $obj->packages;
@array = $obj->scalars;
@array = $obj->arrays;
@array = $obj->hashes;
@array = $obj->functions;
@array = $obj->filehandles;  # deprecated, use ios instead
@array = $obj->dirhandles;   # deprecated, use ios instead
@array = $obj->ios;
@array = $obj->unknowns;
$string = $obj->as_string;
$string = $obj->as_HTML;
$string = $obj1->diff($obj2);
$string   =    Devel::Symdump->isa_tree;       #    or
$obj->isa_tree
$string    =    Devel::Symdump->inh_tree;       #   or
$obj->inh_tree
# Methods with autogenerated objects
# all of those call new(@packs) internally
@array = Devel::Symdump->packages(@packs);
@array = Devel::Symdump->scalars(@packs);
@array = Devel::Symdump->arrays(@packs);
@array = Devel::Symdump->hashes(@packs);
@array = Devel::Symdump->functions(@packs);
@array = Devel::Symdump->ios(@packs);
@array = Devel::Symdump->unknowns(@packs);
Incompatibility with versions before 2.00
Perl 5.003 already offered the opportunity to test for the
individual slots of a GLOB with the *GLOB{XXX} notation.
Devel::Symdump version 2.00 uses this method internally
which means that the type of undefined values is recog
nized in general. Previous versions couldn't determine the
type of undefined values, so the slot unknowns was
invented. From version 2.00 this slot is still present but
will usually not contain any elements.
The interface has changed slightly between the perl ver
sions 5.003 and 5.004. To be precise, from perl5.003_11
the names of the members of a GLOB have changed. "IO" is
the internal name for all kinds of input-output handles
while "FILEHANDLE" and "DIRHANDLE" are deprecated.
"Devel::Symdump" accordingly introduces the new method
ios() which returns filehandles and directory handles. The
old methods filehandles() and dirhandles() are still sup
ported for a transitional period.  They will probably have
to go in future versions.

DESCRIPTION

This little package serves to access the symbol table of
perl.

"Devel::Symdump->rnew(@packages)"
returns a symbol table object for all subtrees below
@packages. Nested Modules are analyzed recursively.
If no package is given as argument, it defaults to
"main". That means to get the whole symbol table, just
do a "rnew" without arguments.
"Devel::Symdump->new(@packages)"
does not go into recursion and only analyzes the pack
ages that are given as arguments.
The methods packages(), scalars(), arrays(), hashes(), functions(), ios(), and unknowns() each return an array of fully qualified symbols of the specified type in all pack
ages that are held within a Devel::Symdump object, but
without the leading "$", "@" or "%". In a scalar context,
they will return the number of such symbols. Unknown sym
bols are usually either formats or variables that haven't
yet got a defined value.
As_string() and as_HTML() return a simple string/HTML rep resentations of the object.
Diff() prints the difference between two Devel::Symdump
objects in human readable form. The format is similar to
the one used by the as_string method.
Isa_tree() and inh_tree() both return a simple string rep resentation of the current inheritance tree. The differ
ence between the two methods is the direction from which
the tree is viewed: top-down or bottom-up. As I'm sure,
many users will have different expectation about what is
top and what is bottom, I'll provide an example what hap
pens when the Socket module is loaded:
% print Devel::Symdump->inh_tree
AutoLoader
DynaLoader
Socket
DynaLoader
Socket
Exporter
Carp
Config
Socket
The inh_tree method shows on the left hand side a
package name and indented to the right the packages
that use the former.
% print Devel::Symdump->isa_tree
Carp
Exporter
Config
Exporter
DynaLoader
AutoLoader
Socket
Exporter
DynaLoader
AutoLoader
The isa_tree method displays from left to right ISA
relationships, so Socket IS A DynaLoader and
DynaLoader IS A AutoLoader. (Actually, they were at
the time this manpage was written)
You may call both methods, isa_tree() and inh_tree(), with an object. If you do that, the object will store the out
put and retrieve it when you call the same method again
later. The typical usage would be to use them as class
methods directly though.

SUBCLASSING

The design of this package is intentionally primitive and
allows it to be subclassed easily. An example of a (maybe)
useful subclass is Devel::Symdump::Export, a package which
exports all methods of the Devel::Symdump package and
turns them into functions.

AUTHORS

Andreas Koenig <andk@cpan.org> and Tom Christiansen <tchrist@perl.com>. Based on the old dumpvar.pl by Larry Wall.
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout