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);
26 my $batch = MARC::Batch->new('XML',$ARGV[$argnum]);
29 $batch->warnings_off();
31 while ( my $record = $batch->next() ) {
35 print STDERR "WARNINGS: Record $count : " . join(":",@warnings) . " : continuing...\n" if ( @warnings );
38 for (my $i = 0; $i < scalar(@desired_tags_subfields); $i+=2) {
40 if ($record->field($desired_tags_subfields[$i])) {
41 @tags = $record->field($desired_tags_subfields[$i]);
43 if (scalar(@tags)>1) {
44 die "Multiple $desired_tags_subfields[$i]\n";
45 } elsif (scalar(@tags)==0) {
46 print STDERR "Record $count missing $desired_tags_subfields[$i]\n";
49 foreach my $f ( @tags ) {
50 if ($f->subfield($desired_tags_subfields[$i+1])) {
56 print STDOUT $f->subfield($desired_tags_subfields[$i+1]);
63 print STDERR "Processed $count records\n";