On Wed, Jul 5, 2017 at 11:27 AM, Bill Moseley <mose...@hank.org> wrote:
> 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 > > Well, that's one issue, but there are others, for example $@ being set to a false value. I also appreciate the semantic clarity of try/catch. Cheers, Dave Rolsky http://blog.urth.org https://github.com/autarch