# sort file names by the (first) sequence of digits, then by size my @sorted = map { $_->[0], sort { $a->[1] cmp $b->[1] } map { m/(\d+)/; # sort by digits in file name [ $_, pack "l>l>", $1 || 0, -s $_ ] } @filelist;