# New Ticket Created by Aleks-Daniel Jakimenko-Aleksejev # Please include the string: [perl #131111] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=131111 >
Code: my @a = <a b c>; my @b = <1 2 3>; my @c = @a, @b; say @c Result: [[a b c] [1 2 3]] So with arrays, nothing is flattened and you get an array with two elements. Makes sense. And if we want to get a different behavior, we can use slip: Code: my @a = <a b c>; my @b = <1 2 3>; my @c = |@a, |@b; say @c Result: [a b c 1 2 3] Everything is fine so far. Now, let's try the same thing with hashes: Code: my %a = <a b c d>; my %b = <1 2 3 4>; my %c = %a, %b; say %c Result: {1 => 2, 3 => 4, a => b, c => d} To me that looks like an inconsistency, I would have expected it to create a hash with one pair (%a => %b). In fact, both 「%c = %a, %b」 and 「%c = |%a, |%b」 work exactly the same! The idea of %a => %b may seem weird, but it really isn't if you consider object hashes (my %c{Hash} = %a => %b; or even my %c{Hash} = $%a, $%b) Another thing to note is that this array behavior was changed during the GLR, but hashes remained the same. Perhaps that was an oversight.