[librecat-dev] Adding MARC subfields using Catmandu
Basil Marti
basil.marti at unibas.ch
Fri May 19 16:11:15 CEST 2017
Dear all
Is there an elegant way (either using the Catmandu fix-language or using Catmandu inside a Perl script) to add subfields to an existing MARC field, without replacing existing subfields?
E.g. if some condition is true, add subfield $h with content "Microfilm" to field 245.
I could use marc_set('245h','Microfilm'), but if I understand its behavior correctly, it will replace any existing subfield $h.
The only way I found is reading out all existing 245 subfields, deleting the field and and then creating a new 245 field with both the original subfields and the new subfield:
marc_map('245a','title');
marc_map('245b','subtitle');
marc_map('245c','author');
marc_map('245h','medium');
if "some condition"
marc_remove ('245')
marc_add('245', 'a', '$.title', 'b', '$.subtitle', 'c', '$.author', 'h', '$.medium', 'h', 'Microfilm')
end
Especially if a field has a lot of different subfields and/or repeatable subfields this is rather complicated. Is there any easier way?
Best regards
Basil
Basil Marti | Systembibliothekar
Universität Basel | Universitätsbibliothek | IT-Abteilung
Schönbeinstrasse 18-20 | 4056 Basel | Schweiz
Tel +41 61 207 11 88 | Fax +41 61 207 31 03
E-Mail basil.marti at unibas.ch | http://www.ub.unibas.ch
More information about the librecat-dev
mailing list