better docstring
[migration-tools.git] / spit_csv.pl
index e235ec6..8a02003 100755 (executable)
@@ -1,12 +1,13 @@
 #!/usr/bin/perl
 use MARC::Batch;
 use MARC::File::XML ( BinaryEncoding => 'utf-8' );
-use MARC::Field;
+#use MARC::Field;
 use Unicode::Normalize;
 
 
 my @desired_tags_subfields = ();
 foreach my $argnum ( 1 .. $#ARGV) {
+    print STDERR $ARGV[$argnum] . "\n";
     push @desired_tags_subfields, $ARGV[$argnum];
 }
 
@@ -19,7 +20,11 @@ foreach my $argnum ( 0 .. 0 ) {
 
        print STDERR "Processing " . $ARGV[$argnum] . "\n";
 
-       my $batch = MARC::Batch->new('XML',$ARGV[$argnum]);
+    #my $M;
+    #open $M, '<:utf8', $ARGV[$argnum];
+    #my $batch = MARC::Batch->new('XML',$M);
+    my $batch = MARC::Batch->new('XML',$ARGV[$argnum]);
+
        $batch->strict_off();
        $batch->warnings_off();
 
@@ -29,9 +34,18 @@ foreach my $argnum ( 0 .. 0 ) {
 
                print STDERR "WARNINGS: Record $count : " .  join(":",@warnings) . " : continuing...\n" if ( @warnings );
 
+        my $first = 1;
         for (my $i = 0; $i < scalar(@desired_tags_subfields); $i+=2) {
-            my $first = 1;
-                   my @tags; if ($record->field($desired_tags_subfields[$i])) { @tags = $record->field($desired_tags_subfields[$i]); }
+                   my @tags = (); 
+            if ($record->field($desired_tags_subfields[$i])) { 
+                @tags = $record->field($desired_tags_subfields[$i]); 
+            }
+            if (scalar(@tags)>1) { 
+                die "Multiple $desired_tags_subfields[$i]\n"; 
+            } elsif (scalar(@tags)==0) { 
+                print STDERR "Record $count missing $desired_tags_subfields[$i]\n"; 
+                goto END_OF_WHILE; 
+            }
             foreach my $f ( @tags ) { 
                 if ($f->subfield($desired_tags_subfields[$i+1])) { 
                     if ($first) {
@@ -44,7 +58,7 @@ foreach my $argnum ( 0 .. 0 ) {
             }
         }
         print STDOUT "\n";
-
+        END_OF_WHILE:
        }
        print STDERR "Processed $count records\n";
 }