# New Ticket Created by "Carl Mäsak"
# Please include the string: [perl #72326]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=72326 >
This be Rakudo db84bc on Parrot r43174.
$ perl6 -e 'class A::B { my $c; method foo { $c = "OH HAI"; say $c }
}; A::B.foo'
OH HAI
$ perl6 -e 'class A::B { my $c; method foo { $A::B::c = "OH HAI"; say
$A::B::c } }; A::B.foo'
OH HAI
Fair enough. So far Rakudo agrees with my expectations. But watch this:
$ perl6 -e 'class A::B { my $c = 42; method foo { $A::B::c = "OH HAI";
say $c } }; A::B.foo'
42
$ perl6 -e 'class A::B { my $c = 42; method foo { $c = "OH HAI"; say
$A::B::c } }; A::B.foo'
Use of uninitialized value
Ok, so in the first case we set $A::B::c and $c is unaffected. I'd
expect it to change, since it's really the same memory
location/slot/whatever.
In the second case, we set $c and $A::B::c is unaffected. Furthermore,
$A::B::c isn't even initialized to 42 in this case, even though
$A::B::c should only be a longer way of saying $c (inside the A::B
scope).