use strict; my @unsorted = ( '864278_864377', '864518_864703', '851171_851270', '855398_855579', '856258_856357', '861015_861139', '866387_866549', '791806_792296', '1088806_1082296', ); my @sorted = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [ $_, ( split(/\_/, $_) )[0] ] } @unsorted; print join ("\n",@sorted);