--- trunk/lib/WebPAC/Normalize.pm 2006/01/08 21:50:34 372 +++ trunk/lib/WebPAC/Normalize.pm 2006/02/15 15:54:12 397 @@ -204,7 +204,7 @@ } if (! @v) { $log->debug("$field <",$self->{tag},"> format: $format no values"); -# next; + next; } else { $log->debug("$field <",$self->{tag},"> format: $format values: ", join(",", @v)); } @@ -471,15 +471,20 @@ # remove filter{...} from beginning $filter_name = $1 if ($format =~ s/^filter{([^}]+)}//s); - # do actual replacement of placeholders - # repeatable fields - if ($format =~ s/v(\d+)(?:\^(\w))?/$self->get_data(\$rec,$1,$2,$i,\$found,$rec_size)/ges) { - $just_single = 0; - } + { + # fix warnings + no warnings 'uninitialized'; + + # do actual replacement of placeholders + # repeatable fields + if ($format =~ s/v(\d+)(?:\^(\w))?/$self->get_data(\$rec,$1,$2,$i,\$found,$rec_size)/ges) { + $just_single = 0; + } - # non-repeatable fields - if ($format =~ s/s(\d+)(?:\^(\w))?/$self->get_data(\$rec,$1,$2,0,\$found,$rec_size)/ges) { - return if ($i > 0 && $just_single); + # non-repeatable fields + if ($format =~ s/s(\d+)(?:\^(\w))?/$self->get_data(\$rec,$1,$2,0,\$found,$rec_size)/ges) { + return if ($i > 0 && $just_single); + } } if ($found) { @@ -532,21 +537,27 @@ $log->logconfess("need HASH as first argument!") if ($rec !~ /HASH/o); return if (! $format_utf8); + $log->debug("using $code on $format_utf8"); + my $i = 0; my $max = 0; my @arr; my $rec_size = {}; while ($i <= $max) { - my $v = $self->$code($rec,$format_utf8,$i++,\$rec_size) || next; - push @arr, $v; + my @v = $self->$code($rec,$format_utf8,$i++,\$rec_size); if ($rec_size) { foreach my $f (keys %{ $rec_size }) { $max = $rec_size->{$f} if ($rec_size->{$f} > $max); } - warn "max set to $max, rec_size = ", Dumper($rec_size); + $log->debug("max set to $max"); undef $rec_size; } + if (@v) { + push @arr, @v; + } else { + push @arr, '' if ($max > $i); + } } $log->debug("format '$format_utf8' returned ",--$i," elements: ", sub { join(" | ",@arr) }) if (@arr);