2 # This program is part of da_reference, and is released under the
3 # terms of the GPL version 2, or any later version, at your
4 # option. See the file README and COPYING for more information.
5 # Copyright 2004 by Don Armstrong <don@donarmstrong.com>.
19 get_reference - Retrieve a reference from somewhere and output the
20 formatted reference to STDOUT.
24 get_reference [options] referenceid [referenceid ...]
27 --pmid,-p referenceid is a pub med id. (Default)
28 --bibtex,-b ouput in bibtex format (Default)
29 --debug, -d debugging level (Default 0)
30 --help,-h display this help
31 --man,-m display manual
39 The referenceid listed is a Pub Med ID. (Default)
43 Output the listed referenceid in BibTeX format. (Default)
47 Display brief useage information.
57 get_reference -p -b -d 1 123456;
67 my %options = (pmid => 1,
76 GetOptions(\%options,'pmid|p','bibtex|b','suggest_name|suggest-name','debug|d','help|h','man|m',
77 'journal_titles|journal-titles|journal_title|journal-titles',
80 pod2usage() if $options{help};
81 pod2usage({verbose=>2}) if $options{man};
83 $DEBUG = $options{debug};
85 if ($options{pmid} and $options{bibtex}) {
86 use Reference::Type::Article;
87 use Reference::Retrieve::PubMed;
88 use Reference::Output::Bibtex;
89 use Reference::Output::Filename;
90 $Reference::Retrieve::PubMed::DEBUG = $options{debug};
91 foreach my $pmid (@ARGV) {
92 next unless ($pmid) = $pmid =~ /(\d+)/;
93 print STDERR "dealing with $pmid\n" if $DEBUG;
94 my $reference = scalar Reference::Retrieve::PubMed::get_reference_by_pmid(pmid => $pmid);
95 print STDERR "Unable to retrieve reference for $pmid\n" and next if not defined $reference;
96 if ($options{suggest_name}) {
97 # try to suggest a name for the reference
98 print '%Filename: '.lc(filename($reference))."\n";
100 if ($options{journal_titles}) {
101 print '%Medline: @string {'.$reference->journal(output=>'bibtex').'="'.
102 $reference->journal(output=>'medline').qq("}\n);
103 print '%isoabbr: @string {'.$reference->journal(output=>'bibtex').'="'.
104 $reference->journal(output=>'iso').qq("}\n);
106 print scalar bibtex($reference);