jabowery has asked for the wisdom of the Perl Monks concerning the following question:

When I run the 'T' command of the Perl debugger, it shows the arguments accurately but partially. I need to look at one string that is rather long that is getting passed around.

If I do:

@a=caller($n)

the returned list accurately shows the package, file name, sub name, etc. but int(@DB::args) is always 1 even though the 'T' command shows the right number of arguments.

I'm to the point of thinking I'll have to modify the perl debugger to get the run-time info I need.

Is there an easier way?

Replies are listed 'Best First'.
Re: x @DB::args
by repellent (Priest) on Mar 15, 2012 at 05:50 UTC
    Seems fine to me:
    bash-3.2$ cat t4.pl #!/usr/bin/perl sub foo { print "inside foo\n"; } foo( [1..3], {a => 4, b => 5}, 'a' x 6, 789, ); bash-3.2$ perl -d t4.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::(t4.pl:7): foo( main::(t4.pl:8): [1..3], main::(t4.pl:9): {a => 4, b => 5}, main::(t4.pl:10): 'a' x 6, main::(t4.pl:11): 789, main::(t4.pl:12): ); DB<1> s main::foo(t4.pl:4): print "inside foo\n"; DB<1> T . = main::foo(ref(ARRAY), ref(HASH), 'aaaaaa', 789) called from file ` +t4.pl' line 7 DB<1> x @DB::args 0 ARRAY(0x100812fe0) 0 1 1 2 2 3 1 HASH(0x10097d318) 'a' => 4 'b' => 5 2 'aaaaaa' 3 789 DB<2> q