* Jonathan Rockway <[EMAIL PROTECTED]> [2008-05-03 21:15]:
> You said you're trying to emulate $@, but $@ can be changed out
> from under you rather easily, so instead of:
>
> eval { foo() };
> if($@){ error }
>
> The defensive programmer will write:
>
> my $result = eval { foo() };
> if(!defined $result){ error } # use $@ for more details, if necessary.
An even more defensive programmer will write:
my $result;
if ( eval { $result = foo(); 1 } ) {
# ...
}
That’s not necessary in every case, but if foo() can legitimately
return undef, you need it. Unfortunately the expression in `eval`
is often more complex, so it can hard to make readable.
Regards,
--
Aristotle Pagaltzis // <http://plasmasturm.org/>