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 <auta...@urth.org> wrote: > On Wed, Jul 5, 2017 at 10:23 AM, Eric Brine <ikeg...@adaelis.com> wrote: > >> On Wed, Jul 5, 2017 at 10:59 AM, Thomas (HFM) Wyant < >> harryfm...@comcast.net> 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 mose...@hank.org