in reply to Labels at beginning of a block

The label goes before the block, which you can't do with a grep (or map) block, and besides, you are using grep in void context which makes no sense in your example.    You probably need something like this:

NUM: for my $i ( 1 .. 10 ) { for ( 0 .. $i ) { last NUM if $_ > 3; } }