Skip to content

Instantly share code, notes, and snippets.

@fredericd
Created December 30, 2014 10:49
Show Gist options
  • Save fredericd/f1e99cc91145b0c0a8c9 to your computer and use it in GitHub Desktop.
Save fredericd/f1e99cc91145b0c0a8c9 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use Modern::Perl;
use utf8;
use MARC::Moose::Reader::File::Iso2709;
use MARC::Moose::Writer;
use IO::File;
use MARC::Moose::Formater::Iso2709;
my $reader = MARC::Moose::Reader::File::Iso2709->new( file => 'biblio.mrc' );
my $writer_iso = MARC::Moose::Writer->new(
fh => IO::File->new('biblio-clean.mrc', '>:encoding(utf8)'),
formater => MARC::Moose::Formater::Iso2709->new(),
);
my $writer_txt = MARC::Moose::Writer->new(
fh => IO::File->new('biblio-clean.txt', '>:encoding(utf8)'),
);
while ( my $record = $reader->read() ) {
for my $field ($record->field('[2-9]..')) {
$field->subf( [ map {
my ($letter, $value) = @$_;
$value =~ s/\./\. /g;
$value =~ s/,/, /g;
$value =~ s/;/; /g;
$value =~ s/:/: /g;
$value =~ s/]/] /g;
while ( $value =~ s/ / /g ) { ; }
[ $letter => $value ];
} @{$field->subf} ] );
}
$writer_iso->write( $record );
$writer_txt->write( $record );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment