3 use MARC::File::XML ( BinaryEncoding => 'utf-8' );
5 use Unicode::Normalize;
8 my @desired_tags_subfields = ();
9 foreach my $argnum ( 1 .. $#ARGV) {
10 print STDERR $ARGV[$argnum] . "\n";
11 push @desired_tags_subfields, $ARGV[$argnum];
16 binmode(STDOUT, ':utf8');
17 binmode(STDIN, ':utf8');
19 foreach my $argnum ( 0 .. 0 ) {
21 print STDERR "Processing " . $ARGV[$argnum] . "\n";
23 my $batch = MARC::Batch->new('XML',$ARGV[$argnum]);
25 $batch->warnings_off();
27 while ( my $record = $batch->next() ) {
31 print STDERR "WARNINGS: Record $count : " . join(":",@warnings) . " : continuing...\n" if ( @warnings );
34 for (my $i = 0; $i < scalar(@desired_tags_subfields); $i+=2) {
36 if ($record->field($desired_tags_subfields[$i])) {
37 @tags = $record->field($desired_tags_subfields[$i]);
39 if (scalar(@tags)>1) {
40 die "Multiple $desired_tags_subfields[$i]\n";
41 } elsif (scalar(@tags)==0) {
42 print STDERR "Record $count missing $desired_tags_subfields[$i]\n";
45 foreach my $f ( @tags ) {
46 if ($f->subfield($desired_tags_subfields[$i+1])) {
52 print STDOUT $f->subfield($desired_tags_subfields[$i+1]);
59 print STDERR "Processed $count records\n";