in reply to Re^2: eval: Why use the 'Zombie error' idiom?
in thread eval: Why use the 'Zombie error' idiom?

Interesting choice. I use Try::Tiny precisely to avoid having to work around the edge cases inherent in eval. YMMV, of course.

  • Comment on Re^3: eval: Why use the 'Zombie error' idiom?

Replies are listed 'Best First'.
Re^4: eval: Why use the 'Zombie error' idiom?
by kikuchiyo (Hermit) on Oct 18, 2019 at 11:34 UTC
    The reason I avoid Try::Tiny is that its catch block is actually a function in disguise, not just a block like with the original eval idiom. So a return from a Try::Tiny catch block returns just from that block, and not from the enclosing function, which is useless and misleading.

      Indeed so, and the Try::Tiny POD explains this in some detail. If you want to return directly from a catch block then Syntax::Keyword::Try might be for you? There's also TryCatch but that uses Moose so isn't exactly the lightest tool in the box.

      Interestingly, the block names used with the loop control operators are dynamically scoped, so last, next, and redo all work in that context, but I do not think that there is any good way to actually return a value from the sub in such a block.