Используйте опцию preprocess для создания файлов в каждом каталоге, прежде чем переходить в подкаталоги:
use strict;
use warnings;
use File::Find 'find';
find(
{
'wanted' => sub { print "$File::Find::name\n" },
'preprocess' => sub { sort { -d $a <=> -d $b } @_ }
},
'.'
);
Хотя, чтобы избежать дополнительной статистики, она должна быть:
sub { map $_->[0], sort { $a->[1] <=> $b->[1] } map [ $_, -d $_ ], @_ }