use Carp; print "Test\n"; func1( @args ); sub func1 { &func2 } sub func2 { confess "This is who to blame for sending no args\n" unless @_; } __DATA__ This is who to blame for sending no args main::func2 called at script line 7 main::func1() called at script line 5 #### func( [ 'ary1' => \@ary1 ], [ 'ary2' => \@ary2 ] ); sub func { print "Name $_->[0], Array Ref $_->[1]\n" for @_; }