36 |
|
|
37 |
=head1 VERSION |
=head1 VERSION |
38 |
|
|
39 |
Version 0.16 |
Version 0.17 |
40 |
|
|
41 |
=cut |
=cut |
42 |
|
|
43 |
our $VERSION = '0.16'; |
our $VERSION = '0.17'; |
44 |
|
|
45 |
=head1 SYNOPSIS |
=head1 SYNOPSIS |
46 |
|
|
740 |
if (ref($rec->{$f}) eq 'ARRAY') { |
if (ref($rec->{$f}) eq 'ARRAY') { |
741 |
return map { |
return map { |
742 |
if (ref($_) eq 'HASH') { |
if (ref($_) eq 'HASH') { |
743 |
values %{$_}; |
my $h = $_; |
744 |
|
if ( defined($h->{subfields}) ) { |
745 |
|
my $sfs = delete $h->{subfields} || die "no subfields?"; |
746 |
|
my @out; |
747 |
|
while (@$sfs) { |
748 |
|
my $sf = shift @$sfs; |
749 |
|
my $o = shift @$sfs; |
750 |
|
if ($o == 0 && ref( $h->{$sf} ) ne 'ARRAY' ) { |
751 |
|
# single element subfields are not arrays |
752 |
|
push @out, $h->{$sf}; |
753 |
|
} else { |
754 |
|
warn "====> $f $sf $o $#$sfs ", dump( $sfs ), "\n"; |
755 |
|
push @out, $h->{$sf}->[$o]; |
756 |
|
} |
757 |
|
} |
758 |
|
return @out; |
759 |
|
} else { |
760 |
|
# FIXME this should probably be in alphabetical order instead of hash order |
761 |
|
values %{$h}; |
762 |
|
} |
763 |
} else { |
} else { |
764 |
$_; |
$_; |
765 |
} |
} |