Sepia::Xref(3pm) | User Contributed Perl Documentation | Sepia::Xref(3pm) |
NAME¶
Sepia::Xref - Generates cross reference database for use by Perl programs.
SYNOPSIS¶
use Sepia::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¶
"Sepia::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.
- %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.
Functions¶
- "guess_module_file($pack, $ofile)"
- XXX: it turns out that rooting around trying to figure out the file ourselves is more reliable than what we grab from the op. Are we doing this wrong?
- "rebuild()"
- Rebuild the Xref database.
- "forget($func [, $mod])"
- Forget that $func was defined.
- "redefined($func [, $pack])"
- Recompute xref info for $func, or "$pack::$func" if $pack given.
- "callers($func)"
- List callers of $func.
- "callees($func)"
- List callees of $func.
- "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.
- "file_modules($file)"
- List the modules defined in file $file.
- "var_apropos($expr)"
- Find variables matching $expr.
EXPORTS¶
Nothing by default, but all sub and variable described above can be imported. "Sepia::Xref" also defines the tags ":most" for the above-listed functions, and ":all" for those and the variables as well.
BUGS¶
- See B::Xref.
- module names are ignored when looking up a sub.
- file and line number guessing is evil
- Both should be done more cleanly and effectively. This is a hack because I don't quite understand what perl saves. We should be able to do as well as its warning messages.
- Some packages are not xref'd.
- Some "internal" packages are deliberately not cross-referenced, either because they are hairy and cause us problems, or because they are so commonly included as to be uninteresting. The current list includes all pragmatic modules, plus: B, O, AutoLoader, DynaLoader, XSLoader, Config, DB, VMS, FileHandle, Exporter, Carp, PerlIO::Layer.
- Tree-view is not fully functional
- Ideally, clicking the function names in tree view would take you to that function. This doesn't work. Also, more keys (like "q" to quit) should be implemented.
SEE ALSO¶
"B::Xref", of which "Sepia::Xref" is a bastard child.
AUTHOR¶
B::Xref by Malcolm Beattie, m(angl|odifi)ed by Sean O'Rourke (seano@cpan.org).
2022-06-26 | perl v5.34.0 |