dynamic scoring integraation
[migration-tools.git] / trim_marc_based_on_tag_subfield_value.pl
1 #!/usr/bin/perl
2 use open ':utf8';
3 use MARC::Batch;
4 use MARC::File::XML ( BinaryEncoding => 'utf-8' );
5 use MARC::Field;
6 use Unicode::Normalize;
7
8
9 my $tag_number = $ARGV[0];
10 my $tag_subfield = $ARGV[1];
11 my $tag_value = $ARGV[2];
12
13 my $count = 0;
14
15 binmode(STDOUT, ':utf8');
16 binmode(STDIN, ':utf8');
17
18 foreach $argnum ( 3 .. $#ARGV ) {
19
20         print STDERR "Processing " . $ARGV[$argnum] . "\n";
21
22     my $M;
23     open $M, '<:utf8', $ARGV[$argnum];
24     my $batch = MARC::Batch->new('XML',$M);
25
26         $batch->strict_off();
27         $batch->warnings_off();
28
29         while ( my $record = $batch->next() ) {
30
31         $count++;
32
33                 print STDERR "WARNINGS: Record $count : " .  join(":",@warnings) . " : continuing...\n" if ( @warnings );
34
35         my $keep_me = 0;
36
37         my @tags = ();
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; } 
42             } 
43         }
44
45         if ($keep_me) {
46             print STDOUT $record->as_xml();
47         }
48
49         }
50         print STDERR "Processed $count records\n";
51 }