--- trunk/lib/WebPAC/Input/ISI.pm 2009/05/30 14:21:58 1209 +++ trunk/lib/WebPAC/Input/ISI.pm 2009/09/20 19:05:56 1302 @@ -105,6 +105,10 @@ my $rec; $self->{size} = 0; + my $max_size; + $max_size = ( $self->{offset} || 0 ) + $self->{limit} if $self->{limit}; + + warn "# max_size: $max_size"; while( $line = <$fh> ) { chomp($line); @@ -124,19 +128,28 @@ } } elsif ( $line eq 'ER' ) { # join tags - foreach ( qw/AB DE ID TI/ ) { + foreach ( qw/AB DE ID TI SO RP SC FU FX PA JI/ ) { $rec->{$_} = join(' ', @{ $rec->{$_} }) if defined $rec->{$_}; } + # split on ; + foreach ( qw/ID SC DE/ ) { + $rec->{$_} = [ split(/;\s/, $rec->{$_}) ] if defined $rec->{$_}; + } $rec->{'000'} = [ ++$self->{size} ]; push @{ $self->{_rec} }, $rec; + + last if $max_size && $self->{size} == $max_size; + $rec = {}; $line = <$fh>; chomp $line; $log->logdie("expected blank like in ",$arg->{path}, " +$.: $line") unless ( $line eq '' ); } elsif ( $line eq 'EF' ) { last; + } elsif ( $line =~ m{^(\S\S)\s*$} ) { + warn "# $arg->{path} +$. empty |$line|\n"; } else { - $log->logdie("can't parse +$. $arg->{path} : $line"); + $log->logdie("can't parse +$. $arg->{path} |$line|"); } if ( defined $v ) {