[mcmahon@joe-desk ~]$ ls -R ./example/
./example/:
file nonempty_files_only nonempty_has_dirs
./example/nonempty_files_only:
file1 file2
./example/nonempty_has_dirs:
file1 one two
./example/nonempty_has_dirs/one:
./example/nonempty_has_dirs/two:
####
sub dive {
my($d) = shift;
return if ! -d $d;
my @contents = glob("$d/*");
return $d unless @contents;
my @below = map { dive($_) } @contents;
return @below
? @below # Stuff below qualifies, this doesn't
: $d; # Nothing below qualifies, this does
}
$d = './example';
print join ", ", dive($d),"\n";
####
./example/nonempty_files_only, ./example/nonempty_has_dirs/one, ./example/nonempty_has_dirs/two