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.
|
|---|