Interesting choice. I use Try::Tiny precisely to avoid having to work around the edge cases inherent in eval. YMMV, of course.
| [reply] |
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.
| [reply] |
| [reply] [d/l] |
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.
| [reply] [d/l] [select] |