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

