/[MARC-Fast]/trunk/lib/MARC/Fast.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/MARC/Fast.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/Fast.pm revision 31 by dpavlin, Thu Feb 4 17:09:49 2010 UTC trunk/lib/MARC/Fast.pm revision 42 by dpavlin, Thu Sep 23 13:07:28 2010 UTC
# Line 7  use Data::Dump qw/dump/; Line 7  use Data::Dump qw/dump/;
7  BEGIN {  BEGIN {
8          use Exporter ();          use Exporter ();
9          use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);          use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
10          $VERSION     = 0.09;          $VERSION     = 0.10;
11          @ISA         = qw (Exporter);          @ISA         = qw (Exporter);
12          #Give a hoot don't pollute, do not export more than needed by default          #Give a hoot don't pollute, do not export more than needed by default
13          @EXPORT      = qw ();          @EXPORT      = qw ();
# Line 87  sub new { Line 87  sub new {
87                  my $len = read($self->{fh}, $leader, 24);                  my $len = read($self->{fh}, $leader, 24);
88    
89                  if ($len < 24) {                  if ($len < 24) {
90                          carp "short read of leader, aborting\n";                          warn "short read of leader, aborting\n";
91                          $self->{count}--;                          $self->{count}--;
92                          last;                          last;
93                  }                  }
# Line 311  sub to_hash { Line 311  sub to_hash {
311    
312          my $row = $self->fetch($mfn) || return;          my $row = $self->fetch($mfn) || return;
313    
314          foreach my $rec_nr (keys %{$row}) {          foreach my $tag (keys %{$row}) {
315                  foreach my $l (@{$row->{$rec_nr}}) {                  foreach my $l (@{$row->{$tag}}) {
316    
317                          # remove end marker                          # remove end marker
318                          $l =~ s/\x1E$//;                          $l =~ s/\x1E$//;
319    
320                          # filter output                          # filter output
321                          $l = $self->{'hash_filter'}->($l, $rec_nr) if ($self->{'hash_filter'});                          $l = $self->{'hash_filter'}->($l, $tag) if ($self->{'hash_filter'});
322    
323                          my $val;                          my $val;
324    
# Line 333  sub to_hash { Line 333  sub to_hash {
333                                  foreach my $t (split(/\x1F/,$l)) {                                  foreach my $t (split(/\x1F/,$l)) {
334                                          next if (! $t);                                          next if (! $t);
335                                          my $f = substr($t,0,1);                                          my $f = substr($t,0,1);
336                                            my $v = substr($t,1);
337    
338                                          push @subfields, ( $f, $sf_usage->{$f}++ || 0 );                                          push @subfields, ( $f, $sf_usage->{$f}++ || 0 );
339    
340                                          # repeatable subfiled -- convert it to array                                          # repeatable subfiled -- convert it to array
341                                          if ($val->{$f}) {                                          if ( defined $val->{$f} ) {
342                                                  if ( ref($val->{$f}) ne 'ARRAY' ) {                                                  if ( ref($val->{$f}) ne 'ARRAY' ) {
343                                                          $val->{$f} = [ $val->{$f}, $val ];                                                          $val->{$f} = [ $val->{$f}, $v ];
344                                                  } else {                                                  } else {
345                                                          push @{$val->{$f}}, $val;                                                          push @{$val->{$f}}, $v;
346                                                  }                                                  }
347                                            } else {
348                                                    $val->{$f} = $v;
349                                          }                                          }
                                         $val->{substr($t,0,1)} = substr($t,1);  
350                                  }                                  }
351                                  $val->{subfields} = [ @subfields ] if $args->{include_subfields};                                  $val->{subfields} = [ @subfields ] if $args->{include_subfields};
352                          } else {                          } else {
353                                  $val = $l;                                  $val = $l;
354                          }                          }
355    
356                          push @{$rec->{$rec_nr}}, $val;                          push @{$rec->{$tag}}, $val;
357                  }                  }
358          }          }
359    

Legend:
Removed from v.31  
changed lines
  Added in v.42

  ViewVC Help
Powered by ViewVC 1.1.26