The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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.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'