http://www.perlmonks.org?node_id=447250

vindaloo has asked for the wisdom of the Perl Monks concerning the following question:

I would like to sort a hash not in any of the ways I have seen in tutorials (therefore I am open to advice on rethinking the problem too). I need to sort these keys, in this order:

sort() on these strings will obviously return: start, step, stop, without my own sorting function. I have read japhy's Resorting to Sorting article and have attempted to apply some of those approaches, but I need a hand.

use strict; use warnings; use diagnostics; my @aoh; push @aoh, { "start" => .4, "stop" => .6, "step" => .1 }; push @aoh, { "start" => .3, "stop" => .5, "step" => .1 }; push @aoh, { "start" => .0, "stop" => .2, "step" => .1 }; push @aoh, { "start" => .5, "stop" => .7, "step" => .1 }; my $aoh = \@aoh; for my $point ( @{$aoh}) { #for my $type ( sort keys %$point ) { for my $type ( sort by_pref keys %$point ) { print "$type\t"; } print "\n"; } sub by_pref { $a cmp $b; #advice? }

P.S. I am not interested in forcing the insertion order using Tie::IxHash for a few different reasons.