map { $_->[1] } sort { $_->[0] cmp $_->[1] } map { my @v = split m#/#; unshift @v, shift(@v) =~ /^(.*?)(\d*)$/; no warnings; # in case @v has less than 4 elements [ sprintf( "%-4s%3d%3d%3d", @v ), $_ ] }