For $work I'm writing a text-only menu system, and that defines callbacks which are called for specific input.

Now the default behavior is to simply ignore the return value (trust me, it makes sense in my $work context), and exit the menu when the input is empty. However I want to give some callbacks the possibility to exit the menu too.

Given that first and grep are conceptually similar, it is counter-intuitive that return inside them means different things. While prototypes help firstlook like a built-in list operator, they don't help it act like one.

I've played around with Scope::Upper a little to try to come up with a resolution for this, but haven't had any luck so far. (Though as a by-product I managed to come up with returning which is pretty fun.) I wonder if last might provide some kind of solution.