Simon Cozens writes: > > $a = $hash{bar}; > > Here you used the copy constructor before taking the reference. It might look > like an assignment operator, but it isn't. You're better off thinking that > assignment doesn't exist. It's a copy constructor. It makes the PMC referred > to by $a a copy of the PMC in $hash{bar}. Their values may be "equal" but > they're two different PMCs. > > > $b = \$hash{bar}; > > Here you didn't make a copy before taking the reference. No copy, only one > PMC. It all works.
Indeed, and this separate PMC is probably the best way to think about it, since we have in Perl 6: $a := %hash{bar}; The operator C<:=> is just like a PMC C<set> as opposed to an C<assign>. If, after this statement, one says: $a = "baz"; One should expect that C<%hash{bar}> would turn into "baz"; Luke