MARC::MIR::Tutorial(3pm) | User Contributed Perl Documentation | MARC::MIR::Tutorial(3pm) |
MARC::MIR::Tutorial - Tutorial for MARC::MIR DSL
to make things more readable and less error prone, we also add a DSL. Every keywords of this DSL works the same way. FIXME : explain.
also, iso2709_records_of is an helper that stream the records of an ISO2709 formatted file.
the perfect boilerplate
use autodie; use Modern::Perl; use Perlude; use MARC::MIR;
print all the ids of the records (assuming the id is in 001, the common case)
now { say record_id from_iso2709 } iso2709_records_of "biblio.marc";
or
marawk { say $ID } "biblio.marc";
remove every 9.. fields
now { $_ = from_iso2709; with_fields { @$_ = grep { (tag) !~ /^9/ } @$_ }; print to_iso2709; } iso2709_records_of "biblio.marc";
every 856$q must be jpeg
now { $_ = from_iso2709; map_fields { tag eq '856' and map_subfields { (tag) eq 'z' and with_value { $_ = 'jpeg' } } } with_fields { @$_ = grep_fields { (tag) !~ /^9/ } @$_ }; } iso2709_records_of "biblio.marc";
or
marawk { map_values { $_ = 'jpeg' } [qw< 856 z >] } "biblio.marc"
collect every 856$z by id
use Modern::Perl; use YAML; use MARC::MIR; my %seen; marawk { map_values { push @{ $seen{$ID} }, $_ } [qw< 856 z >] } "data/*.RAW"; say YAML::Dump \%seen;
# TODO:
2023-02-09 | perl v5.36.0 |