caller#

Synopsis#

my $package = caller;                  # scalar: package name
my ($pkg, $file, $line) = caller;      # list: basic triple
my ($pkg, $file, $line, $sub, ...) = caller(0);
my @info = caller(1);                  # caller's caller

Description#

Returns information about the calling subroutine’s context.

In scalar context, returns the package name of the calling subroutine. In list context, returns a multi-element list with (at minimum) package, filename, and line number. When called with a numeric argument N, returns information about the Nth stack frame above the current subroutine:

Index

Field

0

package name

1

filename

2

line number

3

subroutine

4

hasargs

5

wantarray

Returns undef (scalar) or an empty list if the requested stack depth exceeds the actual call depth. caller(0) returns info from call_stack.last() (the current sub’s frame); caller(1) looks one frame further up.

When the op has WANT bits set to 0 (unknown), the context is inherited from the enclosing call frame, matching perl5 behavior.

See also#

die, warn, caller