use File::Find; my @dupes; { my %dirnames; sub dupe_dir { -d or return; if (exists $dirnames{$_}) { push @dupes, $File::Find::name; } else { ++$dirnames{$_} } 1; } } find(\&dupe_dir) print $_, $/ for @dupes;