use strict; my @files = qw(3_xy.txt 10_foo.txt 2_bar.txt 1_foobar.txt); my @meta = map { join("_", $_->[0], $_->[1]) } sort { $b->[0] <=> $a->[0] } map { [split "_"] } @files; foreach my $file (@meta){ print "$file\n"; }