=over =item caller EXPR =item 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 C or C, 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 C<$subroutine> may be C<"(eval)"> if the frame is not a subroutine call, but an C. In such a case additional elements C<$evaltext> and C<$is_require> are set: C<$is_require> is true if the frame is created by a C or C statement, C<$evaltext> contains the text of the C statement. In particular, for a C statement, C<$filename> is C<"(eval)">, but C<$evaltext> is undefined. (Note also that each C statement creates a C frame inside an C) frame. Furthermore, when called from within the DB package, caller returns more detailed information: it sets the list variable C<@DB::args> to be the arguments with which the subroutine was invoked. Be aware that the optimizer might have optimized call frames away before C had a chance to get the information. That means that C might not return information about the call frame you expect it do, for C 1>. In particular, C<@DB::args> might have information from the previous time C was called. =back