]> git.donarmstrong.com Git - reference.git/blob - .svn/pristine/27/27838510155caec110a4aad4738ea41e9434f92c.svn-base
Import original source of Reference 0-Reference
[reference.git] / .svn / pristine / 27 / 27838510155caec110a4aad4738ea41e9434f92c.svn-base
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$
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               );
74
75 GetOptions(\%options,'pmid|p','bibtex|b','suggest_name|suggest-name','debug|d','help|h','man|m');
76
77 pod2usage() if $options{help};
78 pod2usage({verbose=>2}) if $options{man};
79
80 $DEBUG = $options{debug};
81
82 if ($options{pmid} and $options{bibtex}) {
83      use Reference::Type::Article;
84      use Reference::Retrieve::PubMed;
85      use Reference::Output::Bibtex;
86      use Reference::Output::Filename;
87      $Reference::Retrieve::PubMed::DEBUG = $options{debug};
88      foreach my $pmid (@ARGV) {
89           next unless ($pmid) = $pmid =~ /(\d+)/;
90           print STDERR "dealing with $pmid\n" if $DEBUG;
91           my $reference = scalar Reference::Retrieve::PubMed::get_reference_by_pmid(pmid => $pmid);
92           print STDERR "Unable to retrieve reference for $pmid\n" and next if not defined $reference;
93           if ($options{suggest_name}) {
94                # try to suggest a name for the reference
95                print '%Filename: '.lc(filename($reference))."\n";
96           }
97           print scalar bibtex($reference);
98      }
99      exit 0;
100 }