diff options
-rw-r--r-- | op.c | 2 | ||||
-rwxr-xr-x | t/op/array.t | 13 |
2 files changed, 14 insertions, 1 deletions
@@ -6818,7 +6818,7 @@ Perl_peep(pTHX_ register OP *o) pop->op_next->op_type == OP_AELEM && !(pop->op_next->op_private & (OPpLVAL_INTRO|OPpLVAL_DEFER|OPpDEREF|OPpMAYBE_LVSUB)) && - (i = SvIV(((SVOP*)pop)->op_sv) - PL_compiling.cop_arybase) + (i = SvIV(((SVOP*)pop)->op_sv) - PL_curcop->cop_arybase) <= 255 && i >= 0) { diff --git a/t/op/array.t b/t/op/array.t index d48b5fbfa0..122a49ec3c 100755 --- a/t/op/array.t +++ b/t/op/array.t @@ -234,3 +234,16 @@ sub foo { "a" } @foo=(foo())[0,0]; $foo[1] eq "a" or print "not "; print "ok 71\n"; + +# $[ should have the same effect regardless of whether the aelem +# op is optimized to aelemfast. + +sub tary { + local $[ = 10; + my $five = 5; + print "not " unless $tary[5] == $tary[$five]; + print "ok 72\n"; +} + +@tary = (0..50); +tary(); |