From: Gurusamy Sarathy Date: Mon, 5 Jul 1999 16:29:39 +0000 (+0000) Subject: allow C<-foo> under C (behavior of C<-$string> X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=eac055e92e0ec1f73bd09a2bf54dc6b090cbdb78;p=p5sagit%2Fp5-mst-13.2.git allow C<-foo> under C (behavior of C<-$string> is unchanged still) p4raw-id: //depot/perl@3588 --- diff --git a/op.c b/op.c index f0cd15f..25b17dc 100644 --- a/op.c +++ b/op.c @@ -1833,8 +1833,14 @@ Perl_fold_constants(pTHX_ register OP *o) if (PL_opargs[type] & OA_TARGET) o->op_targ = pad_alloc(type, SVs_PADTMP); - if ((PL_opargs[type] & OA_OTHERINT) && (PL_hints & HINT_INTEGER)) + /* integerize op, unless it happens to be C<-foo>. + * XXX should pp_i_negate() do magic string negation instead? */ + if ((PL_opargs[type] & OA_OTHERINT) && (PL_hints & HINT_INTEGER) + && !(type == OP_NEGATE && cUNOPo->op_first->op_type == OP_CONST + && (cUNOPo->op_first->op_private & OPpCONST_BARE))) + { o->op_ppaddr = PL_ppaddr[type = ++(o->op_type)]; + } if (!(PL_opargs[type] & OA_FOLDCONST)) goto nope;