Since you are printing the directories on the way out you should be able to just do the following:
use strict;
use warnings;
use File::DirWalk;
my $folder = 'E:\test\foldersize\1-folder|E:\test\foldersize\2-folder|
+E:\te
+st\foldersize\5-folder';
my $depth = 3;
my @directory = grep!/^\s*$/, split/\|/, $folder;
my @folder;
my %dirs;
for my $directory (@directory){
my $dw = new File::DirWalk;
$dw->onDirLeave(
sub {
my ($dir) = @_;
if ( !exists $dirs{$dir} ) {
if( $dir =~ /(.*)\\/ ) { undef($dirs{$1}); }
push (@folder, $dir);
}
return File::DirWalk::SUCCESS;
}
);
$dw->setDepth($depth);
$dw->walk($directory);
}
print $_,$/ for @folder
and hence it won't print any directory that has any directories in it.