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

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

