http://qs1969.pair.com?node_id=1177271


in reply to [Perl6] Slurpy array of named arguments?

It seems that you can't do that other than sorting keys:

class testing { method newhash(*%args) { for %args.sort(*.key)>>.kv -> ($k, $v) { say "Hash Key $k => Value $v"; } %args.perl.say; } } my $x = testing.newhash(a => 1, b => 2, c => 3, d => 4);

Here's what docs.perl6.org says about it:

Looping over hash keys and values

Note that the order of the keys and values printed cannot be relied upon; the elements of a hash are not always stored the same way in memory for different runs of the same program. Sometimes one wishes to process the elements sorted on, e.g. the keys of the hash.

There you can also find canonical example.

The code %args.perl.say also do keys sorting, no magic there either.

It seems to me you have only one way to put your keys in order - name them in sortable manner and sort it later.