NAME
Devel::Xref - Generates cross reference database for use by Perl programs.
SYNOPSIS
use Devel::Xref qw(rebuild defs callers);
rebuild;
for (defs 'foo') {
printf "%s:%d: sub %s\::foo() defined\n", @{$_}[0..2];
}
for (callers 'foo') {
printf "%s:%d: sub foo() called by %s\::%s().\n", @{$_}[0..3];
}
DESCRIPTION
Devel::Xref is intended as a programmatic interface to the information supplied by B::Xref. It is intended to be a component for interactive Perl development, with other packages providing a friendly interface to the raw information it extracts. B::Xref could be seen as an example of this sort of user-level tool, if it weren't for the fact that this module was created later, and stole most of its code.
Variables
%call
-
A map of subs to call locations and callers
%callby
-
A map of subs to subs called.
%def
-
A map of subs to definitions.
%package_sub
-
A map of packages to subs defined.
%var_use
-
A map of global/package variables to uses.
%var_def
-
A map of global/package variables to definitions (usually empty, since it only picks up local (...) declarations.
%module_files
-
A map of module names to containing files.
Functions
rebuild()
-
Rebuild the Xref database.
forget(@funcs)
-
Forget that
@funcs
were defined. XXX: this really needs to take packages into account. redefined(@funcs)
-
Recompute xref info for each of of
@funcs
. callers($func)
-
List callers of
$func
. callees($func)
-
List callees of
$func
. defs($func)
-
Find locations where
$func
is defined. var_defs($var)
-
Find locations where
$var
is defined. var_uses($var)
-
Find locations where
$var
is used. var_assigns($var)
-
Find locations where
$var
is assigned to. package_subs($pack)
-
Find subs in package
$pack
. mod_file($mod)
-
Find file for module
$mod
. file_modules($file)
-
List the modules defined in file
$file
. apropos($expr)
-
Find subs matching
$expr
. var_apropos($expr)
-
Find variables matching
$expr
. mod_apropos($expr)
-
Find modules matching
$expr
. file_apropos($expr)
-
Find modules matching
$expr
.
EXPORTS
Nothing by default, but all sub and variable described above can be imported. Devel::Xref also defines the tags :most
for the above-listed functions, and :all
for those and the variables as well.
BUGS
See B::Xref. Also, we currently ignore module names when looking up a sub by name. Finally, there is some evil in the way we guess file and line numbers, both of which should be done more cleanly and effectively.
AUTHOR
B::Xref by Malcolm Beattie, m(angl|odifi)ed by Sean O'Rourke (seano@cpan.org).
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 76:
'=item' outside of any '=over'