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";
24 open $M, '<:utf8', $ARGV[$argnum];
25 my $batch = MARC::Batch->new('XML',$M);
28 $batch->warnings_off();
30 while ( my $record = $batch->next() ) {
34 print STDERR "WARNINGS: Record $count : " . join(":",@warnings) . " : continuing...\n" if ( @warnings );
37 for (my $i = 0; $i < scalar(@desired_tags_subfields); $i+=2) {
39 if ($record->field($desired_tags_subfields[$i])) {
40 @tags = $record->field($desired_tags_subfields[$i]);
42 if (scalar(@tags)>1) {
43 die "Multiple $desired_tags_subfields[$i]\n";
44 } elsif (scalar(@tags)==0) {
45 print STDERR "Record $count missing $desired_tags_subfields[$i]\n";
48 foreach my $f ( @tags ) {
49 if ($f->subfield($desired_tags_subfields[$i+1])) {
55 print STDOUT $f->subfield($desired_tags_subfields[$i+1]);
62 print STDERR "Processed $count records\n";