in reply to sort exceptions

Here's a slightly more generic version of 3dan's answer. I prefer to think of them not as exceptions but as a primary sort key, derived through a hash lookup with a default of 0, with the straight cmp of the strings being the secondary sort key.
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), $/;
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).