in reply to sorting numbered words
Update: A GT form which might be quicker, but makes an assumption about the maximum length of the inputs:
print for map{ unpack 'x255A*', $_ } sort map { ( my $x = $_ ) =~ s[(\d+)]{ pack 'N', $1 }ge; pack 'a255a*', $x, $_; } <DATA>;
Not the fastest implementation, but I think it will handle most contingencies, provided no individual numeric field exceeds 2**32:
#! 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>; __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
Gives:
c:\test>junk test60.something-1-14 test60.something-14-1 test60.something-14-14 test69.something-1-14 test69.something-14-1 test69.something-14-14 text1 text2 text3 text10 text11
|
|---|