#!/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);
####
> perl tst.pl
1
@_ = 1 2 3
called_args = 1 2 3
####
> perl -d tst.pl
Loading DB routines from perl5db.pl version 1.3
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(tst.pl:5): $|=1;
DB<100> n
main::(tst.pl:7): print "1\n";
DB<100>
1
main::(tst.pl:25): tst(1..3);
DB<100>
@_ = 1 2 3
called_args = 1 2 3
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.