in reply to $@ can't be relied on?

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

-Paul

Replies are listed 'Best First'.
Re^2: $@ can't be relied on?
by Anonymous Monk on Nov 18, 2009 at 03:03 UTC
    eval { might_explode(); 1 } or die "omgish: $@\n"; __END__ omgish: Undefined subroutine &main::might_explode called at - line 2.