caller - get context of the current subroutine call
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);
$subroutine may be
"(eval)" if the frame is not a subroutine call, but an eval(). In such a case additional elements
$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,
$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.