use strict; use warnings; chomp( my @unsorted = ); my @sorted = map unpack( 'x4a*', $_ ), sort map pack( 'Na*', /(\d+)\D*\z/, $_ ), @unsorted; print map "$_\n", @sorted; __DATA__ sequence3.gb.txt sequence1.gb.txt sequence7.gb.txt sequence5.gb.txt sequence2.gb.txt sequence4.gb.txt sequence10.gb.txt sequence9.gb.txt sequence8.gb.txt