9 require LWP::UserAgent;
12 use Carp qw(confess cluck);
14 use Sys::Hostname::Long;
18 my $URL_BASE="http://".hostname_long().":7680";
19 my $URL_VALIDATOR_BASE="http://validator.w3.org/check?uri=";
24 "validate!",\$opt_validate,
27 my($first_pattern)=@ARGV;
33 my $UA=LWP::UserAgent->new();
36 my $first_seen=!$first_pattern;
37 My::ModPerlPm->list("sub"=>sub {
40 eval 'require '.$p->{"module"}.'; 1;'
41 or cluck "Error loading module ".$p->{"module"}.": $@";
42 my $result=eval '$'.$p->{"module"}.'::HTML_TEST;';
43 return if defined $result && !$result;
44 my $url=$URL_BASE.$p->{"url"};
45 my $url_matches=1 if $first_pattern && $url=~/$first_pattern/o;
46 die "Pattern amiguous on: $url\n" if $first_seen && $url_matches;
47 if (!$first_seen && !($first_seen=($url=~/$first_pattern/o))) {
53 $url=$URL_VALIDATOR_BASE.uri_escape($url);
55 my $request=HTTP::Request->new("GET",$url);
56 $request->header("Cache-control"=>"no-cache");
57 my $response=$UA->request($request);
58 if ($response->code()==HTTP::Status::RC_OK()) {
59 return if !$opt_validate;
60 local $_=$response->content();
61 my $valid=/\bclass="valid"\s*>/;
62 my $invalid=/\bclass="invalid"\s*>/;
63 die "\nUnexpected response: $url\n" if $valid==$invalid;
67 die "\n$url: ".$response->code()."\n";
70 die "Nothing seen for: $first_pattern\n" if !$first_seen;