use File::Find; use Digest::MD5; find(\&listAll, "c:\\"); sub listAll { $md5 = Digest::MD5->new; $filename = $_; if(-d $filename) { #get rid of directories return "no directories"; } open(FILE, "$filename") or die; binmode(FILE); $md5->addfile(FILE); close(FILE); print "$File::Find::name "; print $md5->hexdigest(), "\n"; } output: C:\>listall.pl c:\/AUTOEXEC.BAT d41d8cd98f00b204e9800998ecf8427e c:\/baseline1 0305eab2943842801884eae7b06ec657 c:\/boot.ini 6a289edcc9478818d47fa155be8bfd9a c:\/CONFIG.SYS d41d8cd98f00b204e9800998ecf8427e c:\/IO.SYS d41d8cd98f00b204e9800998ecf8427e c:\/listall.pl 08a1a210e5340e2aaacebdc85c5518c7 c:\/MSDOS.SYS d41d8cd98f00b204e9800998ecf8427e c:\/NTDETECT.COM cdce1413695a6ace7304e77f35aa3a37 c:\/ntldr eaad72a0cbd33f63d4cda5e933a5d6d8 Died at C:\listall.pl line 19.