Object-oriented backtrace
Devel::BeginLift 'lifts' arbitrary sub calls to running at compile
time - sort of a souped up version of "use constant". It does this via
some slightly insane perlguts magic.
Devel::CallChecker makes some new features of the Perl 5.14.0 C API available to
XS modules running on older versions of Perl. The features are centred around
the function cv_set_call_checker, which allows XS code to attach a magical
annotation to a Perl subroutine, resulting in resolvable calls to that
subroutine being mutated at compile time by arbitrary C code. This module makes
cv_set_call_checker and several supporting functions available. (It is possible
to achieve the effect of cv_set_call_checker from XS code on much earlier Perl
versions, but it is painful to achieve without the centralised facility.)
Devel::CallCheckerprovides the implementation of the functions at runtime (on
Perls where they are not provided by the core). It also, at compile time,
supplies the C header file and link library which provide access to the
functions. In normal use, "callchecker0_h" and "callchecker_linkable" should be
called at build time (not authoring time) for the module that wishes to use the
C functions.
Devel::Caller - meatier versions of caller
SYNOPSIS
use Devel::Caller qw(caller_cv);
$foo = sub { print "huzzah\n" if $foo == caller_cv(0) };
$foo->(); # prints huzzah
use Devel::Caller qw(called_with);
sub foo { print called_with(0,1); }
foo( my @foo ); # should print '@foo'
Devel::CheckCompiler is a checker for compiler's availability.
The primary purpose of this is to turn a smashed reference address back
into a value. Once a reference is treated as a numeric value, you can't
dereference it normally; although with this module, you can.
Be careful, though, to avoid dereferencing things that don't want to be
dereferenced.
Devel::CheckLib provides a way of checking whether a particular library and
its headers are available, by attempting to compile a simple program and
link against it.
Devel::CheckOS provides a more friendly interface to $^O, and also lets you
check for various OS "families" such as "Unix", which includes things like
Linux, Solaris, AIX etc.
The Devel::Refactor module is for code refactoring.
While Devel::Refactor may be used from Perl programs, it is also
designed to be used with the EPIC plug-in for the eclipse integrated
development environment.
Declaring constants is very convenient for writing programs, but as
they're often inlined by Perl, retrieving their symbolic names can be
tricky. This is made worse with low level modules that use constants for
bit-twiddling.
Devel::Constants makes this much more manageable.
It silently wraps around the constant module, intercepting all constant
declarations. It builds a hash, associating the values to their names.
The names can then be retrieved as necessary.