forked from WING-NUS/ACL-Anthology-Codebase
-
Notifications
You must be signed in to change notification settings - Fork 0
/
anthoBibs2bib.old.pl
executable file
·122 lines (99 loc) · 2.82 KB
/
anthoBibs2bib.old.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/usr/bin/env perl
# -*- cperl -*-
=head1 NAME
=head1 SYNOPSYS
RCS:$Id$
=head1 DESCRIPTION
=head1 HISTORY
ORIGIN: created from templateApp.pl version 3.4 by Min-Yen Kan <[email protected]>
RCS:$Log$
=cut
require 5.0;
use Getopt::Std;
use strict 'vars';
# use diagnostics;
### USER customizable section
my $tmpfile .= $0; $tmpfile =~ s/[\.\/]//g;
$tmpfile .= $$ . time;
if ($tmpfile =~ /^([-\@\w.]+)$/) { $tmpfile = $1; } # untaint tmpfile variable
$tmpfile = "/tmp/" . $tmpfile;
$0 =~ /([^\/]+)$/; my $progname = $1;
my $outputVersion = "1.0";
### END user customizable section
### Ctrl-C handler
sub quitHandler {
print STDERR "\n# $progname fatal\t\tReceived a 'SIGINT'\n# $progname - exiting cleanly\n";
exit;
}
### HELP Sub-procedure
sub Help {
print STDERR "usage: $progname -h\t\t\t\t[invokes help]\n";
print STDERR " $progname -v\t\t\t\t[invokes version]\n";
print STDERR " $progname [-q] filename(s)...\n";
print STDERR "Options:\n";
print STDERR "\t-q\tQuiet Mode (don't echo license)\n";
print STDERR "\n";
print STDERR "Will accept input on STDIN as a single file.\n";
print STDERR "\n";
}
### VERSION Sub-procedure
sub Version {
if (system ("perldoc $0")) {
die "Need \"perldoc\" in PATH to print version information";
}
exit;
}
sub License {
print STDERR "# Copyright 2005 \251 by Min-Yen Kan\n";
}
###
### MAIN program
###
my $cmdLine = $0 . " " . join (" ", @ARGV);
if ($#ARGV == -1) { # invoked with no arguments, possible error in execution?
print STDERR "# $progname info\t\tNo arguments detected, waiting for input on command line.\n";
print STDERR "# $progname info\t\tIf you need help, stop this program and reinvoke with \"-h\".\n";
}
$SIG{'INT'} = 'quitHandler';
getopts ('hqv');
our ($opt_q, $opt_v, $opt_h);
# use (!defined $opt_X) for options with arguments
if (!$opt_q) { License(); } # call License, if asked for
if ($opt_v) { Version(); exit(0); } # call Version, if asked for
if ($opt_h) { Help(); exit (0); } # call help, if asked for
## standardize input stream (either STDIN on first arg on command line)
my $fh;
my $filename;
if ($filename = shift) {
NEWFILE:
if (!(-e $filename)) { die "# $progname crash\t\tFile \"$filename\" doesn't exist"; }
open (*IF, $filename) || die "# $progname crash\t\tCan't open \"$filename\"";
$fh = "IF";
} else {
$filename = "<STDIN>";
$fh = "STDIN";
}
my $bib = "";
my $filename = "";
while (<$fh>) {
if (/^\#/) { next; } # skip comments
elsif (/^\s+$/) { next; } # skip blank lines
elsif (/url\s*=.+anthology\/(.+)\.pdf/i) {
$filename = "$1.bib";
$bib .= $_;
} elsif (/^\}\s*/) {
open (OF, ">$filename") || die;
print OF "$bib\n";
close (OF);
$bib = "";
} else {
$bib .= $_;
}
}
close ($fh);
if ($filename = shift) {
goto NEWFILE;
}
###
### END of main program
###