my %term_order; @term_order{qw( SM AU WI SP )} = 1..4; my @try = ( [qw( WI AU SM SP )], [qw( SP AU SM WI )], [qw( AU WI SP SM )] ); for my $try (@try) { my @sort = sort { $term_order{$a} <=> $term_order{$b} } @$try; print "@sort\n"; }