in reply to Keeping perl alive after a module calls die.

let me quote part of the documentation of die():

Outside an "eval", prints the value of LIST to "STDERR" and exits with the current value of $! (errno). If $! is 0, exits with the value of "($? >> 8)" (backtick `command` status). If "($? >> 8)" is 0, exits with 255. Inside an "eval()," the error message is stuffed into $@ and the "eval" is terminated with the undefined value. This makes "die" the way to raise an exception.
Which means that SOAP::Lite does exactly what you wanted. It throws an exception :-)

You just have to catch it:

eval { some code that might die() }; if ($@) { handle the exception you find in $@ }

Jenda
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
   -- Rick Osborne

Edit by castaway: Closed small tag in signature