#!/usr/bin/perl -w
use strict;
use DBI;
use LWP::Simple;
use Digest::MD5 qw(md5 md5_hex md5_base64);
my $dbh = DBI->connect("dbi:mysql:database", "user", "password") || die "Can't connect";
my $sth = $dbh->prepare("select url from sites");
$sth->execute();
my $url = undef;
$sth->bind_col(1,\$url);
my @urls = ();
while($sth->fetch()) { push(@urls, $url); }
$sth->finish();
if (@ARGV)
{ my $url = $ARGV[0];
my $page = get($url);
my ($title) = $page =~ /
(.*?)<\/TITLE>/i;
my $digest = md5_hex($page);
my $date = time();
$title =~ s/\'/\\\'/g;
my $q = join ("','",$title,$url,$digest,$date);
$q = "'".$q."'";
$sth = $dbh->prepare("insert into sites values ('$title','$url','$digest','$date')");
$sth->execute();
}
$sth->finish();
foreach my $url (@urls)
{ my $page = get($url);
print $url,"\n";
my $digest = md5_hex($page);
$sth = $dbh->prepare("select checksum from sites where url = '$url'");
$sth->execute();
my $checksum = undef;
$sth->bind_col(1,\$checksum);
while($sth->fetch)
{ if ($checksum ne $digest)
{ my $date = time();
my ($title) = $page =~ /(.*?)<\/TITLE>/i;
my $q = qq|url = "$url", name = "$title", checksum = "$digest", date = "$date"|;
my $sth2 = $dbh->prepare("update sites set $q where url = '$url'");
$sth2->execute();
}
}
$sth->finish();
}
$dbh->disconnect || die "Disconnection failed";