#!/usr/bin/perl use strict; use warnings; use MARC::Record; use MARC::Batch; use MARC::File::XML; use MARC::Charset; #MARC::Charset->ignore_errors(1); #MARC::Charset->assume_unicode(1); my $infile = $ARGV[0]; my $outfile = $ARGV[1]; my $dumpfile = $ARGV[2]; my $count = 1; my $batch = MARC::Batch->new('USMARC',$infile); $batch->strict_off(); open OUT,">utf8",$outfile; open DUMP,">utf8",$dumpfile; while( my $record = $batch->next() ) { $count++; my $xml = $record->as_xml; my $newrecord; eval { $newrecord = MARC::Record::new_from_xml($xml,'UTF-8'); }; if ($@) { warn $@; print DUMP $xml; die; } print OUT $newrecord->as_usmarc(); } close OUT;