sub w(&$){&{$_[1]}while&{$_[0]}}sub d(&){$_[0]} # then, instead of while (foo) { bar }, w{foo}d{bar}; #### sub l(&){{&{$_[0]};redo}}sub w{$_[0]||last} # then, instead of while (foo) { bar }, l{w foo;bar};