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:
- start
- stop
- step
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.
Back to
Seekers of Perl Wisdom