in reply to Jumping trought lot of subroutines

Disregard this post. Seems I havent got the OPs question right.

That is what Carp is for:

#!/usr/bin/perl use Carp qw(confess cluck); use strict; $SIG{__DIE__} = \&confess; $SIG{__WARN__} = \&cluck; a(); sub a { print "in a\n"; b("foo"); } sub b { warn "got wrong value $_[0]\n"; c("bar"); } sub c { print "in c\n"; die "dying because of $_[0]!\n"; }
that gives
in a got wrong value foo at foo.pl line 17 main::b('foo') called at foo.pl line 13 main::a() called at foo.pl line 9 in c dying because of bar! at foo.pl line 23 main::c('bar') called at foo.pl line 18 main::b('foo') called at foo.pl line 13 main::a() called at foo.pl line 9

With that backtrace you know what's going wrong,and where.

If you want to keep your code running and just examine the errors, you could write a sub that just stores the warnings in an array for later examination, and assign a reference of that to $SIG{__WARN__}.

--shmem

_($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                              /\_¯/(q    /
----------------------------  \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}