Here's a solution that reports the changes in both directions, using a hash for each file. It has been tested.
sub compare_sites {
my($old, $new) = @_;
if (-M $new > -M $old) {
($old, $new) = ($new, $old);
}
open(OLD, $old) or die "Can't open $old: $!\n";
open(NEW, $new) or die "Can't open $new: $!\n";
my(%old, %new);
while (<OLD>) {
chomp;
$old{$_} = 1;
}
while (<NEW>) {
chomp;
$new{$_} = 1;
}
close(OLD);
close(NEW);
my @old = keys %old;
delete @old{keys %new};
delete @new{@old};
for (sort keys %old) {
print "$_ went down overnight.\n";
}
for (sort keys %new) {
print "$_ came up overnight.\n";
}
}