#!/usr/bin/perl use warnings; use strict; use Getopt::Long; use Time::HiRes qw/time/; use MARC::Record; use MARC::File::XML ( BinaryEncoding => 'utf-8' ); # THIS FILE EXTRACTS NONMATCHING RECORDS # configuration hashref my $conf = (); #initialize($conf); my $idfile = shift; my $marcfile = shift; my $import = shift; my $shelve = shift; my %id; open F, "<$idfile"; while () { chomp; $id{$_} = 1; } close F; my $M; my $I; my $S; open $M, '<:utf8', $marcfile; open $I, '>:utf8', $import; open $S, '>:utf8', $shelve; my $starttime = time; my $count = 0; my $icount = 0; my $scount = 0; while (<$M>) { /tag="903" ind1=" " ind2=" ">.*?(\d+){help}); $c->{'incoming-tag'} = 903; $c->{'incoming-subfield'} = 'a'; $c->{'incoming-matchfile'} = ''; $c->{'incoming-nomatchfile'} = ''; $c->{'incumbent-tag'} = 901; $c->{'incumbent-subfield'} = 'a'; $c->{'incumbent-matchfile'} = ''; $c->{'incumbent-nomatchfile'} = ''; my @keys = keys %{$c}; show_help() unless (@ARGV and @keys); for my $key ('renumber-from', 'tag', 'subfield', 'output') { push @missing, $key unless $c->{$key} } if (@missing) { print "Required option: ", join(', ', @missing), " missing!\n"; show_help(); } } =head2 show_help Display usage message when things go wrong =cut sub show_help { print < -o Output filename Any number of input files may be specified; one output file will result. HELP exit 1; }