my %order; @order{qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)} = (1..12); ... my @sorted_filenames = sort { $order{substr($a,0,3)} <=> $order{substr($b,0,3)} } @unsorted_filenames;