I was going through the operator list in the documentation the other day, and I noticed this one:
postfix ,= Creates an object that concatenates, in a class-dependent way, the contents of the variable on the left hand side and the expression on the right hand side: my %a = :11a, :22b; %a ,= :33x; say %a # OUTPUT: «{a => 11, b => 22, x => 33}» I was playing around with this a bit and now I'm wondering what it's talking about with that "class-dependent way". To start with, I've got a small issue with that example: that particular pair-input syntax is my least favorite. Flipping around the order of key and value when the value is a numeric...? And it isn't needed to demo the operator, any pair input syntax works. I might argue that examples should favor the form that "say" is going to spit back to you. This would be clearer at a glance: my %b = a => 11, b => 22; %b ,= x => 33; say %b; # OUTPUT: «{a => 11, b => 22, x => 33}» But where it gets interesting is trying a ,= on something besides a hash. Let's try arrays, where I would expect this to push a value onto the array: my @r = 'a', 'b', 'c'; say @r; # [a b c] @r ,= 'd'; say @r; # (\Array_53270704 = [Array_53270704 d]) dd @r; # Array @r = ((my @Array_37059224) = [@Array_37059224, "d"]) It's difficult for me to even see what that is or how I would use it: say "keys: ", @r.keys; # keys: (0 1) say @r[0]; # (\Array_44472736 = [Array_44472736 d]) say @r[1]; # d So it *does* push a 'd', but it first mangles the original contents of the array. It looks like @r[0] now has some sort of circular pointer back to @r. Whatever this "class-dependent" behavior is, I would suggest it's a "fail". Could this be a bug?