my $in = [ one => 1, two => 2, two => '2.003' ]; my %h; for @$in -> $k, $v { %h{$k}.push: $v; } #### use v6; my $in = [ 'one', 1, 'two', 2, 'two', '2.003' ]; my %h; for @($in) -> $k, $v { if %h{$k} { %h{$k}.push: $v; } else { %h{$k} = [ $v ]; } } say %h.perl; # output: # {"one" => [1], "two" => [2, "2.003"]} #### use v6; my $in = [ one => 1, two => 2, two => '2.003' ]; my %h; for @($in) { if %h{.key} { %h{.key}.push: .value; } else { %h{.key} = [ .value ]; } } say %h.perl; # vim: ft=perl6 sw=4 ts=4 expandtab # same output #### %h{.key}.push: .value for @$in: #### my %h = $in.classify: { $_ }; #### for @($in) -> $k, $v { %h{$k} //= []; %h{$k}.push: $v; }