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;
# 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')) {