if (exists $metadata->{'list'}->[0]->{'lccn'} and !$lccn_number) {
$lccn_number = $metadata->{'list'}->[0]->{'lccn'}->[0];
my $nf = MARC::Field->new('010', '', '', 'a' => "$lccn_number");
- $record->insert_grouped_field($nf);
+ $record->insert_fields_ordered($nf);
my $response = $ua->get("http://xisbn.worldcat.org/webservices/xid/lccn/$lccn_number?method=getMetadata&format=json&fl=*");
if ($response->is_success) {
my $metadata = decode_json($response->decoded_content);
}
if (!$found_owinumber) {
my $nf = MARC::Field->new('024', '7', '', 'a' => "http://worldcat.org/entity/work/id/$owi_number", '2' => 'uri');
- $record->insert_grouped_field($nf);
+ $record->insert_fields_ordered($nf);
}
}
-if ($oclc_number) {
- my @idtags = $record->field('035');
- foreach my $idtag (@idtags) {
- if ($idtag->subfield('a') =~ m#^\(OCoLC\)$oclc_number#) {
- $found_oclcnum = 1;
- }
- }
- if (!$found_oclcnum) {
- my $nf = MARC::Field->new('035', '', '', 'a' => "(OCoLC)$oclc_number");
- $record->insert_grouped_field($nf);
+my @idtags = $record->field('035');
+foreach my $idtag (@idtags) {
+ # Remove meaningless old local Sirsi identifiers
+ if ($idtag->subfield('a') =~ m#^\(Sirsi\)#) {
+ $record->delete_field($idtag);
+ } elsif ($oclc_number && $idtag->subfield('a') =~ m#^\(OCoLC\)$oclc_number#) {
+ $found_oclcnum = 1;
}
}
+if ($oclc_number && !$found_oclcnum) {
+ my $nf = MARC::Field->new('035', '', '', 'a' => "(OCoLC)$oclc_number");
+ $record->insert_fields_ordered($nf);
+}
my $xml = $record->as_xml_record();
$xml =~ s/\n//sgo;