use 5.012; sub list2order { my %index = do { my $i; map {$_ => ++$i} @_; }; sub { $index{$a} <=> $index{$b} }; } use Data::Dumper; my $order = list2order(qw(R A F U S W)); my @stuff = qw(U F S); say for sort $order @stuff;