--- trunk/lib/WebPAC/Input.pm 2006/07/05 19:52:45 585 +++ trunk/lib/WebPAC/Input.pm 2006/07/09 15:22:39 593 @@ -16,11 +16,11 @@ =head1 VERSION -Version 0.07 +Version 0.08 =cut -our $VERSION = '0.07'; +our $VERSION = '0.08'; =head1 SYNOPSIS @@ -300,21 +300,28 @@ # update counters for statistics if ($self->{stats}) { - map { - my $fld = $_; + + foreach my $fld (keys %{ $rec }) { $self->{_stats}->{fld}->{ $fld }++; - if (ref($rec->{ $fld }) eq 'ARRAY') { - map { - if (ref($_) eq 'HASH') { - map { - $self->{_stats}->{sf}->{ $fld }->{ $_ }++; - } keys %{ $_ }; - } else { - $self->{_stats}->{repeatable}->{ $fld }++; + + $log->logdie("invalid record fild $fld, not ARRAY") + unless (ref($rec->{ $fld }) eq 'ARRAY'); + + foreach my $row (@{ $rec->{$fld} }) { + + if (ref($row) eq 'HASH') { + + foreach my $sf (keys %{ $row }) { + $self->{_stats}->{sf}->{ $fld }->{ $sf }->{count}++; + $self->{_stats}->{sf}->{ $fld }->{ $sf }->{repeatable}++ + if (ref($row->{$sf}) eq 'ARRAY'); } - } @{ $rec->{$fld} }; + + } else { + $self->{_stats}->{repeatable}->{ $fld }++; + } } - } keys %{ $rec }; + } } $self->progress_bar($pos,$to_rec) unless ($self->{no_progress_bar}); @@ -469,7 +476,10 @@ if (defined($s->{sf}->{$f})) { map { - $o .= sprintf(" %s:%d", $_, $s->{sf}->{$f}->{$_}); + $o .= sprintf(" %s:%d%s", $_, + $s->{sf}->{$f}->{$_}->{count}, + $s->{sf}->{$f}->{$_}->{repeatable} ? '*' : '', + ); } sort keys %{ $s->{sf}->{$f} }; }