X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=AlephTR.pm;h=be3e11085c9971b0371b89789e763c1ba42f2392;hb=2adc200bce41e9f1fbe9a2829e78c59eab0b50e7;hp=16f4dfab65e289317961c14cb273f6c761ad7f60;hpb=508aa0b160ae0f5e52e70062c0c0c9776c689a50;p=Biblio-Z3950.git diff --git a/AlephTR.pm b/AlephTR.pm index 16f4dfa..be3e110 100644 --- a/AlephTR.pm +++ b/AlephTR.pm @@ -129,10 +129,9 @@ warn "parse $nr"; my $html = $mech->content; -#diag $html; - sub field { my ( $f, $v ) = @_; + $v =~ s/\Q \E/ /gs; $v =~ s/\s+$//gs; warn "## $f\t[$v]\n"; @@ -149,21 +148,24 @@ warn "## $f\t[$v]\n"; } if ( $v !~ s/^\|// ) { # no subfields - $marc->add_fields( $f, $v ); + $marc->add_fields( $f, $v ) unless $f >= 900; warn "## ++ ", dump( $f, $v ); return; } my ($i1,$i2) = (' ',' '); - ($i1,$i2) = ($2,$3 || ' ') if $f =~ s/^(...)(.)(.)?/$1/; + ($i1,$i2) = ($2,$3) if $f =~ s/^(...)(.)?(.)?/$1/; my @sf = split(/\|/, $v); @sf = map { s/^(\w)\s+//; { $1 => $_ } } @sf; #warn "## sf = ", dump(@sf); - $marc->add_fields( $f, $i1, $i2, @sf ); + $i1 ||= ' '; + $i2 ||= ' '; + $marc->add_fields( $f, $i1, $i2, @sf ) unless $f >= 900; warn "## ++ ", dump( $f, $i1, $i2, @sf ); } - $html =~ s|\s*?]*class=td1[^>]*>(.+?)\s*?(.+?)\s*|field($1,$2)|ges; + $html =~ s|\s*?]*class=td1[^>]*>(.+?)\s*?(.+?)\s*?|field($1,$2)|ges; + diag "# hash ",dump($hash); diag "# marc ", $marc->as_formatted;