in reply to Debugger doesn't interrupt
I don't understand the purpose of all those indirections anyway.
Cleaning up the code helps:
#!/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);
See caller for details.
> 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.
Cheers Rolf
(addicted to the Perl Programming Language)
|
|---|