added support for seq file, append .iso extension
[webpac2] / scripts / aleph2iso.pl
index 9dd4b68..7b8df6b 100755 (executable)
@@ -8,7 +8,7 @@ use Data::Dump qw(dump);
 
 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);
@@ -48,6 +48,7 @@ while (<$m21>) {
                $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 {
@@ -65,7 +66,16 @@ while (<$m21>) {
                        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 );
        }
 }