#!/usr/bin/perl # dirdupes use strict; use warnings; use File::Find; #*****************Path Variables********************** our $testpath = 'C:/Temp/'; #******************************************************* my %dirs; find(\&dir_names, $testpath); foreach my $D (sort keys %dirs) { if (@{$dirs{$D}} > 1) { print "\nFound duplicate directories\n"; foreach my $dupes (@{$dirs{$D}}) { print "$D - $dupes\n"; } } } sub dir_names { return unless -d ; return unless /([IPD]\d{8})$/; my $P00 = $_; #or $1 if (not exists($dirs{$P00})) {$dirs{$P00}=[];} push @{$dirs{$P00}},$File::Find::dir; }