bronto has asked for the wisdom of the Perl Monks concerning the following question:
Hello everybody
Yesterday, debugging a program I was writing, I thought I spotted a problem in an eval.
It is a common practice to trap exceptions with code blocks like the following:
eval { # some perl code here . . . } if ($@) { print "eval failed: $@\n\n" ; }
and the one I was in was quite similar to the above. I went back to the documentation and double checked if I remembered exactly eval's syntax. A small section made a bell sound in my head:
If there is a syntax error or runtime error, or a "die" + state- ment is executed, an undefined value is returned by "ev +al", and $@ is set to the error message. If there was no error, + $@ is guaranteed to be a null string.
So, actually, a failed eval returns undef and sets $@. Ok, but...
The question is: it is easy to have an eval succeed (hence setting $@ and return undef, but is it possible to have a failing eval to return a null $@?
Ciao!
--bronto
The very nature of Perl to be like natural language--inconsistant and full of dwim and special cases--makes it impossible to know it all without simply memorizing the documentation (which is not complete or totally correct anyway).
--John M. Dlugosz
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: seeking eval failures
by broquaint (Abbot) on Aug 18, 2003 at 09:20 UTC | |
|
Re: seeking eval failures
by Abigail-II (Bishop) on Aug 18, 2003 at 09:10 UTC | |
|
Re: seeking eval failures
by adrianh (Chancellor) on Aug 18, 2003 at 10:23 UTC | |
|
Re: seeking eval failures (fixed?)
by tye (Sage) on Aug 18, 2003 at 16:11 UTC | |
|
Re: seeking eval failures
by CombatSquirrel (Hermit) on Aug 18, 2003 at 09:17 UTC | |
by antirice (Priest) on Aug 18, 2003 at 09:28 UTC | |
by CombatSquirrel (Hermit) on Aug 18, 2003 at 09:44 UTC | |
by Anonymous Monk on Aug 18, 2003 at 09:59 UTC | |
by Abigail-II (Bishop) on Aug 18, 2003 at 09:27 UTC |