in reply to is there a way to avoid dieing ?

See the block form of eval:

sub iDieSometimes{ rand() > .5 ? return 12345 : die "T'is a far, far...Oh shit! Aaaaaaaargh|" };; $n = eval{ iDieSometimes() } and print "returned $n" or print "It died + with: $@";; It died with: T'is a far, far...Oh shit! Aaaaaaaargh| at (eval 11) lin +e 1, <STDIN> line 10. $n = eval{ iDieSometimes() } and print "returned $n" or print "It died + with: $@";; It died with: T'is a far, far...Oh shit! Aaaaaaaargh| at (eval 11) lin +e 1, <STDIN> line 11. $n = eval{ iDieSometimes() } and print "returned $n" or print "It died + with: $@";; returned 12345 $n = eval{ iDieSometimes() } and print "returned $n" or print "It died + with: $@";; returned 12345 $n = eval{ iDieSometimes() } and print "returned $n" or print "It died + with: $@";; returned 12345 $n = eval{ iDieSometimes() } and print "returned $n" or print "It died + with: $@";; It died with: T'is a far, far...Oh shit! Aaaaaaaargh| at (eval 11) lin +e 1, <STDIN> line 15.

Note: That assumes that the sub cannot legitimately return a false value like 0, or undef.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.