3 eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
4 if 0; # not running under some shell
5 # This program is part of da_reference, and is released under the
6 # terms of the GPL version 2, or any later version, at your
7 # option. See the file README and COPYING for more information.
8 # Copyright 2004 by Don Armstrong <don@donarmstrong.com>.
9 # $Id: get_reference 45 2013-09-10 18:05:31Z don $
22 get_reference - Retrieve a reference from somewhere and output the
23 formatted reference to STDOUT.
27 get_reference [options] referenceid [referenceid ...]
30 --pmid,-p referenceid is a pub med id. (Default)
31 --bibtex,-b ouput in bibtex format (Default)
32 --debug, -d debugging level (Default 0)
33 --help,-h display this help
34 --man,-m display manual
42 The referenceid listed is a Pub Med ID. (Default)
46 Output the listed referenceid in BibTeX format. (Default)
50 Display brief useage information.
60 get_reference -p -b -d 1 123456;
70 my %options = (pmid => 1,
79 GetOptions(\%options,'pmid|p','bibtex|b','suggest_name|suggest-name','debug|d','help|h','man|m',
80 'journal_titles|journal-titles|journal_title|journal-titles',
83 pod2usage() if $options{help};
84 pod2usage({verbose=>2}) if $options{man};
86 $DEBUG = $options{debug};
88 if ($options{pmid} and $options{bibtex}) {
89 use Reference::Type::Article;
90 use Reference::Retrieve::PubMed;
91 use Reference::Output::Bibtex;
92 use Reference::Output::Filename;
93 use Encode qw(encode_utf8);
94 $Reference::Retrieve::PubMed::DEBUG = $options{debug};
95 foreach my $pmid (@ARGV) {
96 next unless ($pmid) = $pmid =~ /(\d+)/;
97 print STDERR "dealing with $pmid\n" if $DEBUG;
98 my $reference = scalar Reference::Retrieve::PubMed::get_reference_by_pmid(pmid => $pmid);
99 print STDERR "Unable to retrieve reference for $pmid\n" and next if not defined $reference;
100 if ($options{suggest_name}) {
101 # try to suggest a name for the reference
102 print '%Filename: '.lc(encode_utf8(Reference::Output::Bibtex::convert_to_utf8(filename($reference))))."\n";
104 if ($options{journal_titles}) {
105 print '%Medline: @string {'.$reference->journal(output=>'bibtex').'="'.
106 $reference->journal(output=>'medline').qq("}\n);
107 print '%isoabbr: @string {'.$reference->journal(output=>'bibtex').'="'.
108 $reference->journal(output=>'iso').qq("}\n);
109 print '%full: @string {'.$reference->journal(output=>'bibtex').'="'.
110 $reference->journal().qq("}\n);
112 print scalar bibtex($reference);