You might want to consider to log the
call stack when something fails. This way, you will easily see where the error originated, whether in an ANON block or not. Choose log level and error handling wisely..
_show_call_stack() if (!$retval);
[...]
sub _show_call_stack {
my $max_depth = 7;
my $i = 1;
if ($log->is_debug()) {
$log->debug("--- Begin stack trace ---");
while ( (my @call = (caller($i++))) && ($i<$max_depth)) {
$log->debug("$call[1] line $call[2] in function call[3]");
}
$log->debug("--- End stack trace ---");
}
}