in reply to eval and return values
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:
return bar->something();
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.my $foo = eval { bar->something() }; die if $@; # See "perldoc -f die" for what this does
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