That's correct. There are rare cases where it doesn't work. The correct way to do this is as follows:
my $res = eval { might_explode(); 1 };
die "omgish: $@\n" unless $res; # Also, why invoke print and exit whe
+n this will do?
Note that die $@ if $@ almost always works. I can't recall the example case I saw, but it's reproducible stuff. It's not like it just randomly doesn't work. Well, maybe with threads.
EDIT: Oh, right. Below, JavaFan gives an example of a case where it doesn't work. Instead of local $@; die, you can easily see there being a function() or an $obj->method that does the equivalent of that without your realizing it. I believe that's what I actually ran into (years ago).
|