perl -le"goto loop; $x=0; if( $x ){ for(;;){ loop: print 'hi' } }"
####
>perl -le"goto loop; $x=0; if( $x ){ for(1){ loop: print 'hi' } }"
Can't "goto" into the middle of a foreach loop at -e line 1.
####
/* push wanted frames */
if (*enterops && enterops[1]) {
OP * const oldop = PL_op;
ix = enterops[1]->op_type == OP_ENTER && in_block ? 2 : 1;
for (; enterops[ix]; ix++) {
PL_op = enterops[ix];
/* Eventually we may want to stack the needed arguments
* for each op. For now, we punt on the hard ones. */
if (PL_op->op_type == OP_ENTERITER)
DIE(aTHX_ "Can't \"goto\" into the middle of a foreach loop");
CALL_FPTR(PL_op->op_ppaddr)(aTHX);
}
PL_op = oldop;
}