#!/usr/bin/perl use warnings; use strict; use Data::Dumper; $Data::Dumper::Terse = 1; $Data::Dumper::Indent = 0; foo(3); sub foo { my $arg = shift; my @array = qw(this that); bar(3, \@array); } sub bar { my ($x, $y) = @_; my $level = 0; while ( my @caller = do { package DB; caller($level++) } ) { my $sub = $caller[3]; my $args = join ", " => map { Dumper($_) } @DB::args; print "$sub( $args )\n"; } }