‘Backward compatibility mode’ is poppycock, I’m afraid. When part of
an argument list a sub call it may or may not be an lvalue. That can-
not be determined until the value passed is (or is not) assigned to.
It has little to do with backward compatibility.
|(OPpENTERSUB_INARGS * (type == OP_LEAVESUBLV));
PL_modcount = RETURN_UNLIMITED_NUMBER;
if (type == OP_GREPSTART || type == OP_ENTERSUB || type == OP_REFGEN) {
- /* Backward compatibility mode: */
+ /* Potential lvalue context: */
o->op_private |= OPpENTERSUB_INARGS;
break;
}