my %gutentypes = (
plucker => {
'mirror' => "http://www.gutenberg.org/cache/plucker/$1/$1",
'content-type' => 'application/prs.plucker',
'string' => 'Plucker',
'format' => 'pdb'
},
html => {
'mirror' => "http://www.gutenberg.org/dirs/$splitguten/$1/$1-h/$1-h.htm",
'content-type' => 'text/html',
'string' => 'Marked-up HTML',
'format' => 'html'
},
text => {
'mirror' => "http://sailor.gutenberg.lib.md.us/$splitguten/$1/$1.txt",
'content-type' => 'text/plain',
'string' => 'Plain text',
'format' => 'txt'
},
);
for my $types ( sort keys %gutentypes ) {
my ($status, $type) = test_head($gutentypes{$types}{mirror});
if ($status == 200) {
$gutentypes{$types}{link} = qq{$gutentypes{$types}{format}\n};
} else {
$gutentypes{$types}{link} = qq{$gutentypes{$types}{format}};
}
}
sub test_head {
my $url = shift;
my $ua = LWP::UserAgent->new;
$ua->agent('pps Plucker Perl Spider, v0.1.83 [rss]');
my $request = HTTP::Request->new(HEAD => $url);
my $response = $ua->request($request);
my $status = $response->status_line;
my $type = $response->header('Content-Type');
my $content = $response->content;
$status =~ m/(\d+)/;
return ($1, $type);
}