for (kid = cLISTOP->op_first; kid; kid = kid->op_sibling)
scalarvoid(kid);
break;
+ case OP_ENTEREVAL:
+ scalarkids(op);
+ break;
case OP_REQUIRE:
- /* since all requires must return a value, they're never void */
+ /* all requires must return a boolean value */
op->op_flags &= ~OPf_WANT;
return scalar(op);
case OP_SPLIT:
}
curcop = &compiling;
break;
+ case OP_REQUIRE:
+ /* all requires must return a boolean value */
+ op->op_flags &= ~OPf_WANT;
+ return scalar(op);
}
return op;
}
switch (op->op_type) {
case OP_UNDEF:
+ modcount++;
return op;
case OP_CONST:
if (!(op->op_private & (OPpCONST_ARYBASE)))
if (op->op_type == OP_TRANS)
return pmtrans(op, expr, repl);
+ hints |= HINT_BLOCK_SCOPE;
pm = (PMOP*)op;
if (expr->op_type == OP_CONST) {
CvROOT(cv) = Nullop;
LEAVE;
}
+ SvPOK_off((SV*)cv); /* forget prototype */
CvFLAGS(cv) = 0;
SvREFCNT_dec(CvGV(cv));
CvGV(cv) = Nullgv;
gv_efullname3(name = sv_newmortal(), gv, Nullch);
sv_setpv(msg, "Prototype mismatch:");
if (name)
- sv_catpvf(msg, " sub %S", name);
+ sv_catpvf(msg, " sub %_", name);
if (SvPOK(cv))
sv_catpvf(msg, " (%s)", SvPVX(cv));
sv_catpv(msg, " vs ");
sv_catpvf(msg, "(%s)", p);
else
sv_catpv(msg, "none");
- warn("%S", msg);
+ warn("%_", msg);
}
}
SAVEFREESV(compcv);
goto done;
}
+ /* ahem, death to those who redefine active sort subs */
+ if (curstack == sortstack && sortcop == CvSTART(cv))
+ croak("Can't redefine active sort subroutine %s", name);
const_sv = cv_const_sv(cv);
if (const_sv || dowarn) {
line_t oldline = curcop->cop_line;
CV *cv;
HV *hv;
- sv_setpvf(sv, "%S:%ld-%ld",
+ sv_setpvf(sv, "%_:%ld-%ld",
GvSV(curcop->cop_filegv),
(long)subline, (long)curcop->cop_line);
gv_efullname3(tmpstr, gv, Nullch);
ck_match(op)
OP *op;
{
- cPMOP->op_pmflags |= PMf_RUNTIME;
- cPMOP->op_pmpermflags |= PMf_RUNTIME;
+ op->op_private |= OPpRUNTIME;
return op;
}