#! perl -sw use strict; print for map{ $_->[0] } sort{ $a->[1] cmp $b->[1] } map { [ $_ , do{ ( my $x = $_ ) =~ s[(\d+)]{ pack 'N', $1 }ge; $x } ] } ; __DATA__ text3 text10 text2 text11 text1 test69.something-14-14 test60.something-14-14 test69.something-1-14 test60.something-1-14 test69.something-14-1 test60.something-14-1