This is a bit ambigous. As a matter of fact, you can leave eval{}, sub{} or do{} using last.
This is plain wrong. please wait for my update before answering.. thanks
perl -le 'sub leave { last }; leave(1)'
Can't "last" outside a loop block at -e line 1.
perl -le '$foo = do { last }'
Can't "last" outside a loop block at -e line 1.
perl -le '$foo = eval { last if 1; 2; }; print $@ if $@; print ">$foo<
+"'
Can't "last" outside a loop block at -e line 1.
><
Rather, you can combine eval, sub and last in some obscure way which will look like it's right and perl didn't complain (although it
does).
update: last exits the loop which is around such blocks immediately, thus works like a goto and is likely to leave a mess behind.
--shmem
_($_=" "x(1<<5)."?\n".q·/)Oo. G°\ /
/\_¯/(q /
---------------------------- \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}