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.
In reply to Re: is there a way to avoid dieing ?
by BrowserUk
in thread is there a way to avoid dieing ?
by palkia
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |