my @files= <*>; @files= do { my @mo= qw(jan feb mar apr may jun jul aug sep oct nov dec); my %mo; @mo{@mo}= 0..$#mo; grep { s/^[^-]*-// } sort grep { # Replace "JAN1" with "a01-JAN1": s/^(...)(\d\d?)/sprintf "%s%02d-%s",$mo{lc$1},$2,$1.$2/e or $_= "?-$_"; 1; } @files; };