pod2usage(-verbose => 1) if ! $ARGV[1];
my $infile;
+my $i = 0;
my $ret = GetOptions(
'file:s' => \$infile
);
my $outfile = $infile . '.prepped_xml';
+my $errorfile = $infile . '.errors_xml';
open my $outfh, '>:utf8', $outfile or die "Can't open output file $!\n";
-
-my $batch = MARC::Batch->new( 'USMARC', $infile );
+open my $errorfh, '>:utf8', $errorfile or die "Can't open error file $!\n";
+
+my $filetype = `file $infile`;
+my $batch;
+if ($filetype =~ m/MARC21/) {
+ $batch = MARC::Batch->new( 'USMARC', $infile );
+} else {
+ $batch = MARC::Batch->new( 'XML', $infile );
+}
$batch->strict_off();
-while ( my $record = $batch->next() ) {
+while ( eval {$record = $batch->next()} or do { if ($@) { print $errorfh $record->as_xml(); next; } } ) {
+ $i++;
+ print "Processed: $i\n" if ($i % 100) == 0;
my @nnn = $record->field('999');
foreach my $n (@nnn) {
$n->set_tag('998');
close ($infile);
close ($outfile);
-
+close ($errorfile);
########### functions