![]() |
|
good chemistry is complicated, and a little bit messy -LW |
|
PerlMonks |
Re: eval and return valuesby jplindstrom (Monsignor) |
on Jan 14, 2009 at 12:44 UTC ( #736216=note: print w/replies, xml ) | Need Help?? |
First, remove the "my" inside the eval block, otherwise it won't do what you think it does.
To me, as written, it's equivalent to:
That's pretty succinct :) What is it that you really want to do? Log the error before rethrowing it? Having said that, this is a slightly more succinct way: But note that if you call a method in between the eval and checking $@, any eval potentially called inside the method will reset $@ for you, so you need to capture the value of $@ immediately. Also note that other things may potentially mess up $@ for you (if an eval was used in a DESTROY block which was triggered by the exception). This is normally not a problem, but when something in your code changes and it becomes a problem it will confuse you for a bit because of the action at a distance. So overall it's better to make sure the eval returns a true value, and check for that. If an exception is thrown, eval returns undef (perldoc -f eval). /J
In Section
Seekers of Perl Wisdom
|
|