johngg@shiraz:~/perl/Monks$ perl -Mstrict -Mwarnings -E ' say for map { substr $_, 54 } sort map { pack q{a50Na50}, ( m{^([A-Za-z]+)(\d+)\.html$} ? ( $1, $2 ) : ( q{}, 0 ) ), $_ } qw{ page1.html index2.html page11.html rubbish.html page3.html index1.html page2.html }' rubbish.html index1.html index2.html page1.html page2.html page3.html page11.html #### use strict; use warnings; use feature qw{ say }; my @unsorted = qw{ page1.html test4.txt index2.html page11.html rubbish.html page3.html index1.html page2.html garble.html page0.html }; my @sorted; my @rejects; push @{ ( m{^\xff{54}} ) ? \ @rejects : \ @sorted }, substr $_, 54 for sort map { pack q{a50Na50}, ( m{^([A-Za-z]+)(\d+)\.html$} ? ( $1, $2 ) : ( qq{\xff} x 50, -1 ) ), $_ } @unsorted; say q{-} x 20; say for @sorted; say q{-} x 20; say for @rejects; say q{-} x 20; #### -------------------- index1.html index2.html page0.html page1.html page2.html page3.html page11.html -------------------- garble.html rubbish.html test4.txt --------------------