Simpler: if (!eval { # try ... return 1; # ok }) { # catch ... }
On Jul 11, 2017 12:06 PM, "Paul Hoffman" <nkui...@nkuitse.com> wrote: On Mon, Jul 10, 2017 at 09:44:15PM +0100, Zefram wrote: > Thomas (HFM) Wyant wrote: > >One of the edge cases with eval {} is the possibility that $@ gets > >clobbered before you get your hands on it. > > The possibility of it being clobbered by a destructor was fixed in 5.14. > (Destructors that do this are considered buggy, for pre-5.14 perls, > and are individually easy to fix, so the problem is still manageable on > those perl versions.) And in perl < 5.14 you can work around it easily enough: my $ok; eval { ... $ok = 1; }; if ($ok) { ... } Paul. -- Paul Hoffman <nkui...@nkuitse.com>