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

Reply via email to