--- trunk/lib/WebPAC/Input/ISI.pm 2007/10/12 12:07:35 904 +++ trunk/lib/WebPAC/Input/ISI.pm 2009/06/02 13:16:02 1215 @@ -12,13 +12,9 @@ WebPAC::Input::ISI - support for ISI Export Format -=head1 VERSION - -Version 0.02 - =cut -our $VERSION = '0.02'; +our $VERSION = '0.03'; =head1 SYNOPSIS @@ -57,9 +53,10 @@ my $subfields = { 'CR' => sub { - my @v = split(/, /, shift); - my $f; - foreach ( qw/author year reference volume page/ ) { + my $full_cr = shift; + my @v = split(/, /, $full_cr); + my $f = { full => $full_cr }; + foreach ( qw/author year reference volume page doi/ ) { if ( my $tmp = shift @v ) { $f->{$_} = $tmp; } @@ -68,6 +65,7 @@ delete $f->{author}; $f->{institution} = $1; } + $f->{doi} =~ s{DOI\s+}{} if $f->{doi}; # strip DOI prefix return $f; }, }; @@ -106,6 +104,8 @@ my $tag; my $rec; + $self->{size} = 0; + while( $line = <$fh> ) { chomp($line); @@ -116,11 +116,18 @@ $v = $2; } elsif ( $line =~ /^\s{3}(.+)$/ ) { $v = $1; + if ( $tag eq 'CR' && $v =~ m{DOI$} ) { + my $doi = <$fh>; + chomp($doi); + $doi =~ s{^\s{3}}{ } || die "can't find DOI in: $doi"; + $v .= $doi; + } } elsif ( $line eq 'ER' ) { # join tags - foreach ( qw/AB DE ID TI/ ) { + foreach ( qw/AB DE ID TI SO RP SC/ ) { $rec->{$_} = join(' ', @{ $rec->{$_} }) if defined $rec->{$_}; } + $rec->{'000'} = [ ++$self->{size} ]; push @{ $self->{_rec} }, $rec; $rec = {}; $line = <$fh>; @@ -173,7 +180,7 @@ sub size { my $self = shift; - return $#{$self->{_rec}} + 1; + return $self->{size}; } =head1 SEE ALSO