use File::Find; use Digest::MD5; find(\&listAll, "c:\\blah\\"); 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\n"; } output: C:\>listall.pl c:\blah\/compare.pl Digest::MD5=SCALAR(0x3b84e20) c:\blah\/file_list Digest::MD5=SCALAR(0x3bc76a0) c:\blah\/mksum.pl Digest::MD5=SCALAR(0x3b84e20) c:\blah\/New Text Document.txt Digest::MD5=SCALAR(0x3bc76a0) c:\blah\/test/compare.pl Digest::MD5=SCALAR(0x3bc76a0) c:\blah\/test/file_list Digest::MD5=SCALAR(0x3bc76b8)