in reply to sort exceptions
Note that if two different elements have the same rank, they will be determinately sorted, rather than depending on perl's sort stability (or lack thereof).use strict; use warnings; my %rank = ( tonsil => -2, # sorts very first foot => -1, # sorts before most hand => 1, # sorts after most chin => 1, # sorts after most pinky => 2, # sorts very last ); sub rank_sort { ($rank{$a}||0) <=> ($rank{$b}||0) || $a cmp $b } my @list = qw/leg hand chin eye pinky foot jaw tonsil finger/; print join(" ", sort rank_sort @list), $/;
|
|---|