--- trunk/lib/WebPAC/Input/ISI.pm 2007/10/10 19:01:55 898 +++ trunk/lib/WebPAC/Input/ISI.pm 2007/10/10 19:01:57 899 @@ -85,6 +85,37 @@ $log->info("opening $format $version database '$arg->{path}'"); + my $tag; + my $rec; + + while( $line = <$fh> ) { + chomp($line); + + my $v; + + if ( $line =~ /^(\S\S)\s(.+)$/ ) { + $tag = $1; + $v = $2; + } elsif ( $line =~ /^\s{3}(.+)$/ ) { + $v = $1; + } elsif ( $line eq 'ER' ) { + push @{ $self->{_rec} }, $rec; + $rec = {}; + $line = <$fh>; + chomp $line; + $log->logdie("expected blank like in ",$arg->{path}, " +$.: $line") unless ( $line eq '' ); + } elsif ( $line eq 'EF' ) { + last; + } else { + $log->logdie("can't parse +$. $arg->{path} : $line"); + } + + push @{ $rec->{$tag} }, $v; + + } + + $log->debug("loaded ", $self->size, " records"); + $self ? return $self : return undef; } @@ -92,18 +123,16 @@ Return record with ID C<$mfn> from database - my $rec = $input->fetch_rec( $mfn, $filter_coderef); + my $rec = $input->fetch_rec( $mfn, $filter_coderef ); =cut sub fetch_rec { my $self = shift; - my ($mfn, $filter_coderef) = @_; - - my $rec; + my ( $mfn, $filter_coderef ) = @_; - return $rec; + return $self->{_rec}->[$mfn-1]; } @@ -117,7 +146,7 @@ sub size { my $self = shift; - return 2; + return $#{$self->{_rec}} + 1; } =head1 AUTHOR