$#... interaction.
p4raw-id: //depot/perl@24791
gv = (GV*)SSPOPPTR;
if (GvAV(gv)) {
AV * const goner = GvAV(gv);
+ /* FIXME - this is a temporary hack until we work out what
+ the correct behaviour for magic should be. */
+ sv_unmagic((SV*)goner, PERL_MAGIC_arylen_p);
SvMAGIC_set(av, SvMAGIC(goner));
SvFLAGS((SV*)av) |= SvMAGICAL(goner);
SvMAGICAL_off(goner);
BEGIN {
chdir 't' if -d 't';
- @INC = '.', '../lib';
+ @INC = ('.', '../lib');
}
require 'test.pl';
-plan (91);
+plan (111);
#
# @foo, @bar, and @ary are also used from tie-stdarray after tie-ing them
test_arylen ($a);
test_arylen (do {my @a; \$#a});
}
+
+{
+ use vars '@array';
+
+ my $outer = \$#array;
+ is ($$outer, -1);
+ is (scalar @array, 0);
+
+ $$outer = 3;
+ is ($$outer, 3);
+ is (scalar @array, 4);
+
+ my $ref = \@array;
+
+ local $TODO = '$#foo semantics with local @foo not fixed yet';
+
+ my $inner;
+ {
+ local @array;
+ $inner = \$#array;
+
+ is ($$inner, -1);
+ is (scalar @array, 0);
+ $$outer = 6;
+
+ is (scalar @$ref, 7);
+
+ is ($$inner, -1);
+ is (scalar @array, 0);
+
+ $$inner = 42;
+ }
+
+ is (scalar @array, 7);
+ is ($$outer, 6);
+
+ is ($$inner, 0, "This is emergent behaviour");
+
+ is (scalar @array, 7);
+ is ($$outer, 6);
+
+ $$inner = 1;
+
+ is (scalar @array, 7);
+ is ($$outer, 6);
+
+ $$inner = 503; # Bang!
+
+ is (scalar @array, 7);
+ is ($$outer, 6);
+}
+
+{
+ # Bug #36211
+ use vars '@array';
+ for (1,2) {
+ {
+ local @a;
+ is ($#a, -1);
+ @a=(1..4)
+ }
+ }
+}
+
+"We're included by lib/Tie/Array/std.t so we need to return something true";