#!/usr/bin/perl use strict; use warnings; $|=1; print "1\n"; sub caller_args { # NB: renamed my ($level) = @_; { package DB; () = caller( ( $level || 0 ) + 1 ); } wantarray ? @DB::args : [@DB::args]; # NB: returning a ref \@DB::args was dangerous } sub tst { local $\="\n"; print "\@_ = @_"; print "called_args = ", join (" ", caller_args(0)); } tst(1..3);