sub Alpha { my $param=shift; { # this is an anonymous code block return; #this leaves the sub, not just the block } print "Do you see me?\n"; } sub Bravo { my $n=shift; ANONYMOUS:{ #print "$n\n"; last ANONYMOUS if !$n; $n-- && redo ANONYMOUS if $n>10; print "$n\n"; $n-- && redo ANONYMOUS if $n>5; } } Alpha; Bravo(20);