#!D\perl\bin\perl.exe -w use strict; my (%dirlist, %loglist, @difference, $dir); unless ($dir = $ARGV[0]) { die "Needs a directory.";} $dir =~ s(\\+)(/)g; unless (-d $dir) {die "This is not a valid directory. $!";} my $logfile = "${dir}/mydirlog.txt"; opendir DIR, "$dir"; while ($_ = readdir(DIR)) {$dirlist{$_}++;} closedir DIR; if (-e $logfile) { open (OLDLOG, $logfile) or die "Cannot open existing log file.\n$!"; while () {chomp; $loglist{$_}++;} close OLDLOG; foreach my $dirName (keys %dirlist) { unless (defined $loglist{$dirName}) { push @difference, "$dirName";} } foreach my $logName (keys %loglist) { unless (defined $dirlist{$logName}) { push @difference, "$logName";} } } open LOG, "> $logfile"; foreach (keys %dirlist) { print LOG "$_\n"; } close LOG; print "@difference";