--- trunk/lib/WebPAC/Normalize.pm 2006/09/11 12:56:05 667 +++ trunk/lib/WebPAC/Normalize.pm 2006/09/11 14:29:01 669 @@ -722,7 +722,11 @@ =head2 _pack_subfields_hash - @values = _pack_subfields_hash( $h, $include_subfields ) + @subfields = _pack_subfields_hash( $h ); + $subfields = _pack_subfields_hash( $h, 1 ); + +Return each subfield value in array or pack them all together and return scalar +with subfields (denoted by C<^>) and values. =cut @@ -741,11 +745,11 @@ my $o = shift @$sfs; if ($o == 0 && ref( $h->{$sf} ) ne 'ARRAY' ) { # single element subfields are not arrays -warn "====> $sf $o / $#$sfs ", dump( $sfs, $h->{$sf} ), "\n"; +#warn "====> $sf $o / $#$sfs ", dump( $sfs, $h->{$sf} ), "\n"; push @out, $h->{$sf}; } else { -warn "====> $sf $o / $#$sfs ", dump( $sfs, $h->{$sf} ), "\n"; +#warn "====> $sf $o / $#$sfs ", dump( $sfs, $h->{$sf} ), "\n"; push @out, $h->{$sf}->[$o]; } } @@ -757,7 +761,7 @@ } else { if ($include_subfields) { my $out = ''; - foreach my $sf (keys %$h) { + foreach my $sf (sort keys %$h) { if (ref($h->{$sf}) eq 'ARRAY') { $out .= '^' . $sf . join('^' . $sf, @{ $h->{$sf} }); } else {