my $source = shift @ARGV || die "usage: $0 file.m21\n";
my $dest = $source;
-$dest =~ s/\..+/.marc/;
+$dest .= '.iso';
open(my $m21, '<', $source);
open(my $out, '>:encoding(utf-8)', $dest);
$sf =~ s/\^/ /g;
$marc->leader( $sf );
} elsif ( $fffii =~ m/^00/ ) {
+ warn "# $id clean $fffii" if $fffii =~ s/[a-z]//g;
my $field = MARC::Field->new( $fffii, $sf );
$marc->append_fields( $field );
} else {
push @f, $1, decode('iso-8859-1', $2);
}
warn "### ",dump( @f );
- my $field = MARC::Field->new( @f );
+ my $field;
+again:
+ eval { $field = MARC::Field->new( @f ) };
+ if ( $@ ) {
+ if ( $@ =~ m/must have indicators/ ) {
+ push @f, ' ', ' ';
+ goto again;
+ }
+ die $@;
+ }
$marc->append_fields( $field );
}
}