summaryrefslogtreecommitdiff
path: root/op.c
diff options
context:
space:
mode:
Diffstat (limited to 'op.c')
-rw-r--r--op.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/op.c b/op.c
index 529506b90e..29f860c8a8 100644
--- a/op.c
+++ b/op.c
@@ -6292,7 +6292,15 @@ Perl_peep(pTHX_ register OP *o)
case OP_GV:
if (o->op_next->op_type == OP_RV2SV) {
- if (!(o->op_next->op_private & OPpDEREF)) {
+ /* don't execute our($foo) */
+ if (o->op_next->op_private & OPpOUR_INTRO) {
+ null(o->op_next);
+ o->op_next = o->op_next->op_next;
+ null(o);
+ if (oldop && o->op_next)
+ oldop->op_next = o->op_next;
+ }
+ else if (!(o->op_next->op_private & OPpDEREF)) {
null(o->op_next);
o->op_private |= o->op_next->op_private & OPpLVAL_INTRO;
o->op_next = o->op_next->op_next;