4 use MARC::File::XML ( BinaryEncoding => 'utf-8' );
6 use Unicode::Normalize;
9 my $tag_number = $ARGV[0];
10 my $tag_subfield = $ARGV[1];
11 my $tag_value = $ARGV[2];
15 binmode(STDOUT, ':utf8');
16 binmode(STDIN, ':utf8');
18 foreach $argnum ( 3 .. $#ARGV ) {
20 print STDERR "Processing " . $ARGV[$argnum] . "\n";
23 open $M, '<:utf8', $ARGV[$argnum];
24 my $batch = MARC::Batch->new('XML',$M);
27 $batch->warnings_off();
29 while ( my $record = $batch->next() ) {
33 print STDERR "WARNINGS: Record $count : " . join(":",@warnings) . " : continuing...\n" if ( @warnings );
38 my @tags; if ($record->field($tag_number)) { @tags = $record->field($tag_number); }
39 foreach my $f ( @tags ) {
40 if ($f->subfield($tag_subfield)) {
41 if ( $f->subfield($tag_subfield)=~ m/($tag_value)/i ) { $keep_me = 1; }
46 print STDOUT $record->as_xml();
50 print STDERR "Processed $count records\n";