Catmandu::Fix::marc_cut - cut marc data in a structured way to a new field
# Cut the 001 field out of the MARC record into the fixed001 marc_cut(001, fixed001) # Cut all 650 fields out of the MARC record into the subjects array marc_cut(650, subjects)
This Fix work like Catmandu::Fix::marc_copy except it will also remove all mathincg fields from the MARC record
Cut this MARC fields referred by a MARC_PATH to a JSON_PATH.
# Cut all the 300 fields marc_cut(300,tmp) # Cut all the 300 fields with indicator 1 = 1 marc_cut(300[1],tmp) # Cut all the 300 fields which have subfield c marc_cut(300c,tmp) # Cut all the 300 fields which have subfield c equal to 'ABC' marc_cut(300c,tmp,equal:"^ABC")
The JSON_PATH tmp will contain an array with one item per field that was cut. Each item is a hash containing the following fields:
tmp
tmp.*.tag - The names of the MARC field tmp.*.ind1 - The value of the first indicator tmp.*.ind2 - The value of the second indicator tmp.*.subfields - An array of subfield item. Each subfield item is a hash of the subfield code and subfield value
E.g.
tmp: - tag: '300' ind1: ' ' ind2: ' ' subfields: - a: 'blabla:' - v: 'test123' - c: 'ok123'
These JSON paths can be used like:
# Set the first indicator of all 300 fields do marc_each(var:this) if all_match(this.tag,300) # Set the first indicator to 1 set_field(this.ind1,1) marc_paste(this) end end # Capitalize all the v subfields of 300 do marc_each(var:this) if all_match(this.tag,300) do list(path:this.subfields, var:loop) if (exists(loop.v)) upcase(loop.v) end end marc_paste(this) end end
This Fix can be used inline in a Perl script:
use Catmandu::Fix::marc_copy as => 'marc_cut'; my $data = { record => ['650', ' ', 0, 'a', 'Perl'] }; $data = marc_cut($data,'650','subject'); print $data->{subject}->[0]->{tag} , "\n"; # '650' print $data->{subject}->[0]->{ind1} , "\n"; # ' ' print $data->{subject}->[0]->{ind2} , "\n"; # 0 print $data->{subject}->[0]->{subfields}->[0]->{a} , "\n"; # 'Perl'
Catmandu::Fix::marc_copy
Catmandu::Fix::marc_paste
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.
To install Catmandu::MARC, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Catmandu::MARC
CPAN shell
perl -MCPAN -e shell install Catmandu::MARC
For more information on module installation, please visit the detailed CPAN module installation guide.