]> git.donarmstrong.com Git - reference.git/blob - bin/get_reference
add missing } to comment
[reference.git] / bin / get_reference
1 #! /usr/bin/perl
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>.
6 # $Id: get_reference 45 2013-09-10 18:05:31Z don $
7
8
9 use warnings;
10 use strict;
11
12
13 use Getopt::Long;
14 use Reference;
15 use Pod::Usage;
16
17 =head1 NAME
18
19 get_reference - Retrieve a reference from somewhere and output the
20 formatted reference to STDOUT.
21
22 =head1 SYNOPSIS
23
24 get_reference [options] referenceid [referenceid ...]
25
26  Options:
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
32
33 =head1 OPTIONS
34
35 =over
36
37 =item B<--pmid, -p>
38
39 The referenceid listed is a Pub Med ID. (Default)
40
41 =item B<--bibtex, -b>
42
43 Output the listed referenceid in BibTeX format. (Default)
44
45 =item B<--help, -h>
46
47 Display brief useage information.
48
49 =item B<--man, -m>
50
51 Display this manual.
52
53 =back
54
55 =head1 EXAMPLES
56
57      get_reference -p -b -d 1 123456;
58
59      get_reference 123456;
60
61 =cut
62
63
64
65 use vars qw($DEBUG);
66
67 my %options = (pmid   => 1,
68                bibtex => 1,
69                debug  => 0,
70                help   => 0,
71                man    => 0,
72                suggest_name => 0,
73                journal_titles => 0,
74               );
75
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',
78           );
79
80 pod2usage() if $options{help};
81 pod2usage({verbose=>2}) if $options{man};
82
83 $DEBUG = $options{debug};
84
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      use Encode qw(encode_utf8);
91      $Reference::Retrieve::PubMed::DEBUG = $options{debug};
92      foreach my $pmid (@ARGV) {
93           next unless ($pmid) = $pmid =~ /(\d+)/;
94           print STDERR "dealing with $pmid\n" if $DEBUG;
95           my $reference = scalar Reference::Retrieve::PubMed::get_reference_by_pmid(pmid => $pmid);
96           print STDERR "Unable to retrieve reference for $pmid\n" and next if not defined $reference;
97           if ($options{suggest_name}) {
98                # try to suggest a name for the reference
99                print '@COMMENT{Filename: '.lc(encode_utf8(Reference::Output::Bibtex::convert_to_utf8(filename($reference))))."}\n";
100           }
101       if ($options{journal_titles}) {
102           print '@COMMENT{Medline: '.$reference->journal(output=>'bibtex').'="'.
103               $reference->journal(output=>'medline').qq("}\n);
104           print '@COMMENT{isoabbr: '.$reference->journal(output=>'bibtex').'="'.
105               $reference->journal(output=>'iso').qq("}\n);
106           print '@COMMENT{full: '.$reference->journal(output=>'bibtex').'="'.
107               $reference->journal().qq("}\n);
108       }
109           print scalar bibtex($reference);
110      }
111 }