caller - get context of the current subroutine call
caller EXPR
caller
Returns the context of the current subroutine call. In scalar context, returns the caller's package name if there is a caller, that is, if we're in a subroutine or eval() or require(), and the undefined value otherwise. In list context, returns
($package, $filename, $line) = caller;
With EXPR, it returns some extra information that the debugger uses to print a stack trace. The value of EXPR indicates how many call frames to go back before the current one.
($package, $filename, $line, $subroutine, $hasargs, $wantarray, $evaltext, $is_require) = caller($i);
Here $subroutine
may be "(eval)"
if the frame is not a subroutine call, but an eval(). In such a case additional elements $evaltext
and
$is_require
are set: $is_require
is true if the frame is created by a
require or use statement, $evaltext
contains the text of the
eval EXPR
statement. In particular, for a eval BLOCK
statement,
$filename
is "(eval)"
, but $evaltext
is undefined. (Note also that each use statement creates a require frame inside an eval EXPR
) frame.
Furthermore, when called from within the
DB package, caller returns more detailed information:
it sets the list variable @DB::args
to be the arguments with which the subroutine was invoked.
Be aware that the optimizer might have optimized call frames away before
caller() had a chance to get the information. That means that caller(N)
might not return information about the call frame you expect it do, for
N > 1
. In particular, @DB::args
might have information from the previous time caller() was called.
If rather than formatting bugs, you encounter substantive content errors in these documents, such as mistakes in the explanations or code, please use the perlbug utility included with the Perl distribution.