--- trunk/lib/WebPAC/Input.pm 2006/07/13 13:55:19 599 +++ trunk/lib/WebPAC/Input.pm 2006/08/25 12:31:06 619 @@ -16,11 +16,11 @@ =head1 VERSION -Version 0.09 +Version 0.11 =cut -our $VERSION = '0.09'; +our $VERSION = '0.11'; =head1 SYNOPSIS @@ -256,18 +256,6 @@ ## this wrongly warn "filter called without field number" unless ($f_nr); - return $l unless ($rec_regex && $f_nr); - - # apply regexps - if ($rec_regex && defined($rec_regex->{$f_nr})) { - $log->logconfess("regexps->{$f_nr} must be ARRAY") if (ref($rec_regex->{$f_nr}) ne 'ARRAY'); - my $c = 0; - foreach my $r (@{ $rec_regex->{$f_nr} }) { - while ( eval '$l =~ ' . $r ) { $c++ }; - } - warn "## field $f_nr triggered $c regexpes\n" if ($c && $self->{debug}); - } - return $l; }, %{ $arg }, @@ -309,7 +297,24 @@ $log->debug("position: $pos\n"); - my $rec = $self->{fetch_rec}->($self, $db, $pos ); + my $rec = $self->{fetch_rec}->($self, $db, $pos, sub { + my ($l,$f_nr) = @_; + return unless defined($l); + return $l unless ($rec_regex && $f_nr); + + # apply regexps + if ($rec_regex && defined($rec_regex->{$f_nr})) { + $log->logconfess("regexps->{$f_nr} must be ARRAY") if (ref($rec_regex->{$f_nr}) ne 'ARRAY'); + my $c = 0; + foreach my $r (@{ $rec_regex->{$f_nr} }) { + #$log->debug("\$l = $l\neval \$l =~ $r"); + eval '$l =~ ' . $r; + $log->error("error applying regex: $r") if ($@); + } + } + + return $l; + }); $log->debug(sub { Dumper($rec) }); @@ -331,6 +336,9 @@ # update counters for statistics if ($self->{stats}) { + # fetch clean record with regexpes applied for statistics + my $rec = $self->{fetch_rec}->($self, $db, $pos); + foreach my $fld (keys %{ $rec }) { $self->{_stats}->{fld}->{ $fld }++; @@ -342,6 +350,7 @@ if (ref($row) eq 'HASH') { foreach my $sf (keys %{ $row }) { + next if ($sf eq 'subfields'); $self->{_stats}->{sf}->{ $fld }->{ $sf }->{count}++; $self->{_stats}->{sf}->{ $fld }->{ $sf }->{repeatable}++ if (ref($row->{$sf}) eq 'ARRAY');