use Try::Tiny; use Log::Log4perl qw(get_logger :levels); Log::Log4perl->init_and_watch('/etc/log4.conf', 60); my $log = get_logger('Q::S'); fred(); sub fred { my $x = try { dave(); 0; } catch { my $ev = $_; if (0) { eval { my $a = 1; 1; } or $log->warn("failed $@"); } else { $log->logwarn("test $_"); } 1; }; print "$x\n"; return if $x; # <---- this would be q.pl line 1895 } sub dave { # the following line would be DB.pm line 1380 my ($sth, $options, @args) = @_; } #### perl -t -I /home/martin/modules/BET/lib q.pl -n1 -p 9999 -r -c /etc/services.ini Attempt to free unreferenced scalar: SV 0xa7b9650, Perl interpreter: 0x9ad0008 at q.pl line 1895, line 1. Failed to insert into job_audit, panic: attempt to copy freed scalar a7b9650 to ad20598 at /home/martin/modules/X/lib/X/DB.pm line 1380, line 1.