NAME
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);
my @foo;
sub foo { print "huzzah" if \@foo == (called_with 0)[0] }
foo(@foo); # should print huzzah
DESCRIPTION
- caller_cv($level)
-
caller_cv
gives you the coderef of the subroutine being invoked at the call frame indicated by the value of $level - caller_args($level)
-
Returns the arguments passed into the caller at level $level
- caller_vars( $level, $names ) =item called_with($level, $names)
-
called_with
returns a list of references to the original arguments to the subroutine at $level. if $names is true, the names of the variables will be returned insteadconstants are returned as
undef
in both cases - called_as_method($level)
-
called_as_method
returns true if the subroutine at $level was called as a method.
BUGS
All of these routines are susceptible to the same limitations as caller
as described in "caller" in perlfunc
The deparsing of the optree perfomed by called_with is fairly simple-minded and so a bit flaky. It's know to currently chokes structures such as this:
foo( [ 'constant' ] );
Also, on perl 5.005_03
use vars qw/@bar/;
foo( @bar = qw( some value ) );
is broken as it generates real split ops rather than optimising it into a constant assignment at compile time as in newer perls.
HISTORY
- 0.08 Released 2003-03-28
-
Added caller_vars as a synonym for called_with
Added caller_args
- 0.06 Released 2002-11-21
-
Fix to called_as_method from Rafael Garcia-Suarez to handle $foo->$method() calls.
- 0.06 Released 2002-11-20
-
Added called_as_method routine
- 0.05 Released 2002-07-25
-
Fix a segfault under ithreads. Cleaned up some development cruft that leaked out while rushing.
- 0.04 Released 2002-07-01
-
Decode glob params too.
- 0.03 Released 2002-04-02
-
Refactored to share the upcontext code from PadWalker 0.08
SEE ALSO
"caller" in perlfunc, PadWalker, Devel::Peek
AUTHOR
Richard Clamp <richardc@unixbeard.net> with close reference to PadWalker by Robin Houston
COPYRIGHT
Copyright (c) 2002, 2003, Richard Clamp. All Rights Reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 96:
You forgot a '=back' before '=head1'