Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: $@ can't be relied on?

by jettero (Monsignor)
on Nov 17, 2009 at 19:53 UTC ( [id://807772]=note: print w/replies, xml ) Need Help??


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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://807772]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2024-04-16 13:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found