Haven't those issues with eval been addressed in more recent versions of
Perl?
For example, in older Perls this used to reset $@, but now $@ is retained:
use strict;
use warnings;
sub Foo::DESTROY {
print "in Foo Destroy\n";
eval { 1 };
print "Foo has \$@ as '$@'\n"
return;
}
eval {
my $foo = bless {}, 'Foo';
die "BOOM\n";
};
print "eval with $@\n";
Returns:
in Foo Destroy
Foo has $@ as ''
eval with BOOM
On Wed, Jul 5, 2017 at 8:52 AM, Dave Rolsky <[email protected]> wrote:
> On Wed, Jul 5, 2017 at 10:23 AM, Eric Brine <[email protected]> wrote:
>
>> On Wed, Jul 5, 2017 at 10:59 AM, Thomas (HFM) Wyant <
>> [email protected]> wrote:
>>
>>> One of the edge cases with eval {} is ...
>>>
>>
>> All the edge cases are covered by the previously linked:
>> https://metacpan.org/pod/Try::Tiny#BACKGROUND
>>
>
> Yes, this is exactly why I would recommend always using Try::Tiny over
> plain eval.
>
> Cheers,
>
> Dave Rolsky
> http://blog.urth.org
> https://github.com/autarch
>
>
--
Bill Moseley
[email protected]