sub l(\&) { WHILE: while(1) { &{$_[0]}(); } } sub w($) { $_[0] or last WHILE } # then, instead of while (foo) { bar }, l{w foo;bar};