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

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 instead

constants 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.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, 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 83:

You forgot a '=back' before '=head1'