{ local $_; do { $_ = ; ... } while defined $_; } #### for (;;) { # Loop until "last". local $_ = ; ... last if not defined $_; } #### { # Loop while "redo". local $_ = ; ... redo if defined $_; } #### my $block = sub { ... }; &$block while ; &$block foreach undef; #### for (;;) { # Loop until "last". local $_ = ; if (defined) { print; } else { print("[undef]\n"); } last unless defined $_; } #### a b c [undef]