perl -le '@l = 1..5; @s = map{last if $_==4;++$_} @l;print "@s"' Can't "last" outside a loop block at -e line 1. perl -le '@l = 1..5; @s = map{return if $_==4;++$_} @l;print "@s"' Can't return outside a subroutine at -e line 1. #### perl -le 'for(1) {@l = 1..5; @s = map {last if $_==4;++$_} @l} print "@s"' #### perl -le '@n = do { {@l = 1..5; @s = map {last if $_==4; "${_}a"} @l} }; print "qw(@s)\nqw(@n)"' qw() qw(1a 2a 3a 4 5)