File::Find
- Performs recursive searches through a directory tree, and calls a
callback function.
#!perl -w
use strict;
use File::Find;
my %directories;
find( \&filehandler, "c:/" );
for my $filename ( sort keys %directories ) {
my @dirlist = @{$directories{ $filename } };
if ( scalar @dirlist > 1 ) {
print "$filename\n";
for ( @dirlist ) {
print " $_\n";
}
} # if
} # for
sub filehandler {
# Check to make sure that it's a file, not a directory
return unless -f $File::Find::name;
# Just take the filename, and convert to lowercase
my $nameonly = lc $_;
# See if it's a DLL or EXE file
return unless $nameonly =~ m/\.(dll|exe)$/i;
$directories{ $nameonly } = [] unless defined $directories{ $nameonly };
push( @{$directories{ $nameonly } }, $File::Find::dir );
} cmc.dll
c:/WINNT/system32
c:/CCMAIL6
commdlg.dll
c:/WINNT/system32
c:/WINNT/system
c:/CCMAIL6/LIV
compobj.dll
c:/WINNT/system32
c:/WINNT/system
|
|
|