sub entrez
{ require LWP::UserAgent;
my $db = shift;
my $keyword = shift;
unless(length($db) || $keyword){
help('entrez');
return;
}
unless($einfo{$db}){
print STDERR " Database\" $db\" is not available.\n";
return;
}
my $ua = new LWP::UserAgent;
my %params = (
email => 'gaou@sfc.keio.ac.jp',
tool => 'g-language.org',
db => $db,
retmax => 10,
retmode => 'xml',
term => $keyword,
);
my $url = $esearch . join('&', map {"$_=$params{$_}"} keys %params);
my $request = new HTTP::Request('GET', $url);
my $response = $ua->request($request);
if ($response->is_success) {
my $xml = XMLin($response->content);
my $entryText = 'entries';
$entryText = "entry" if ($xml->{Count} == 1);
printf " %d %s found in %s: (Showing up to 10 hits)\n\n", $xml->{Count}, $entryText, uc($db);
my $id;
if(ref($xml->{IdList}->{Id}) eq 'ARRAY'){
$id = join(',', @{$xml->{IdList}->{Id}});
}else{
$id = $xml->{IdList}->{Id};
}
my %params = (
email => 'gaou@sfc.keio.ac.jp',
tool => 'g-language.org',
db => $db,
retmax => 10,
retmode => 'xml',
id => $id,
);
my $url = $esummary . join('&', map {"$_=$params{$_}"} keys %params);
my $request = new HTTP::Request('GET', $url);
my $response = $ua->request($request);
if ($response->is_success) {
my $xml = XMLin($response->content);
my $i = 1;
if(ref($xml->{DocSum}) eq 'HASH'){
my $entry = $xml->{DocSum};
my %info;
foreach my $item (@{$entry->{Item}}){
if($item->{Name} eq 'AuthorList'){
if(ref($item->{Item}) eq 'HASH'){
$info{FirstAuthor} = $item->{Item}->{content};
}else{
$info{FirstAuthor} = $item->{Item}->[0]->{content};
}
}else{
$info{$item->{Name}} = $item->{content};
}
}
if($db eq 'pubmed'){
printf " %2d. PMID: %s\n", $i, $entry->{Id};
printf " %s et al.\" %s\"\n %s %s\n\n", $info{FirstAuthor}, $info{Title}, $info{Source}, $info{SO};
}else{
printf " %2d. Accession Number: %s\n", $i, $info{Caption};
printf " %s\n\n", $info{Title};
}
}else{
foreach my $entry (@{$xml->{DocSum}}){
my %info;
foreach my $item (@{$entry->{Item}}){
if($item->{Name} eq 'AuthorList'){
if(ref($item->{Item}) eq 'HASH'){
$info{FirstAuthor} = $item->{Item}->{content};
}else{
$info{FirstAuthor} = $item->{Item}->[0]->{content};
}
}else{
$info{$item->{Name}} = $item->{content};
}
}
if($db eq 'pubmed'){
printf " %2d. PMID: %s\n", $i, $entry->{Id};
printf " %s et al.\" %s\"\n %s %s\n\n", $info{FirstAuthor}, $info{Title}, $info{Source}, $info{SO};
}else{
printf " %2d. Accession Number: %s\n", $i, $info{Caption};
printf " %s\n\n", $info{Title};
}
$i ++;
}
}
} else {
print $response->error_as_HTML;
}
} else {
print $response->error_as_HTML;
} } |