fix typos in table names
[migration-tools.git] / fingerprinter
index a3af67a..f388174 100755 (executable)
@@ -25,6 +25,7 @@ use MARC::Batch;
 use Unicode::Normalize;
 use MARC::File::XML ( BinaryEncoding => 'utf-8' );
 use Equinox::Migration::SubfieldMapper;
+use Equinox::Migration::Utils qw/normalize_oclc_number/;
 
 my $conf  = {}; # configuration hashref
 my $count = 0; my $scount = 0;
@@ -148,13 +149,19 @@ sub populate_marc {
 
     # oclc
     $marc{oclc} = [];
-    push @{ $marc{oclc} }, $record->field('001')->as_string()
-      if ($record->field('001') and $record->field('003') and
-          $record->field('003')->as_string() =~ /OCo{0,1}LC/);
+    if ($record->field('001') &&
+        $record->field('003') &&
+        $record->field('003')->as_string() =~ /OCo{0,1}LC/ &&
+        defined normalize_oclc_number($record->field('001')->as_string())) {
+        push @{ $marc{oclc} }, normalize_oclc_number($record->field('001')->as_string());
+    }
     for ($record->field('035')) {
         my $oclc = $_->subfield('a');
-        push @{ $marc{oclc} }, $oclc
-          if (defined $oclc and $oclc =~ /\(OCoLC\)/ and $oclc =~/([0-9]+)/);
+        if (defined $oclc &&
+            ($oclc =~ /\(OCoLC\)/ || $oclc =~ /(ocm|ocl7|ocn|on)/) &&
+            defined normalize_oclc_number($oclc)) {
+            push @{ $marc{oclc} }, normalize_oclc_number($oclc);
+        }
     }
 
     if ($record->field('999')) {