36 |
|
|
37 |
=head1 VERSION |
=head1 VERSION |
38 |
|
|
39 |
Version 0.18 |
Version 0.19 |
40 |
|
|
41 |
=cut |
=cut |
42 |
|
|
43 |
our $VERSION = '0.18'; |
our $VERSION = '0.19'; |
44 |
|
|
45 |
=head1 SYNOPSIS |
=head1 SYNOPSIS |
46 |
|
|
732 |
|
|
733 |
my ($h,$include_subfields) = @_; |
my ($h,$include_subfields) = @_; |
734 |
|
|
|
|
|
735 |
if ( defined($h->{subfields}) ) { |
if ( defined($h->{subfields}) ) { |
736 |
my $sfs = delete $h->{subfields} || die "no subfields?"; |
my $sfs = delete $h->{subfields} || die "no subfields?"; |
737 |
my @out; |
my @out; |
741 |
my $o = shift @$sfs; |
my $o = shift @$sfs; |
742 |
if ($o == 0 && ref( $h->{$sf} ) ne 'ARRAY' ) { |
if ($o == 0 && ref( $h->{$sf} ) ne 'ARRAY' ) { |
743 |
# single element subfields are not arrays |
# single element subfields are not arrays |
744 |
|
warn "====> $sf $o / $#$sfs ", dump( $sfs, $h->{$sf} ), "\n"; |
745 |
|
|
746 |
push @out, $h->{$sf}; |
push @out, $h->{$sf}; |
747 |
} else { |
} else { |
748 |
#warn "====> $f $sf $o $#$sfs ", dump( $sfs ), "\n"; |
warn "====> $sf $o / $#$sfs ", dump( $sfs, $h->{$sf} ), "\n"; |
749 |
push @out, $h->{$sf}->[$o]; |
push @out, $h->{$sf}->[$o]; |
750 |
} |
} |
751 |
} |
} |
752 |
return @out; |
if ($include_subfields) { |
753 |
|
return join('', @out); |
754 |
|
} else { |
755 |
|
return @out; |
756 |
|
} |
757 |
} else { |
} else { |
758 |
# FIXME this should probably be in alphabetical order instead of hash order |
if ($include_subfields) { |
759 |
values %{$h}; |
my $out = ''; |
760 |
|
foreach my $sf (keys %$h) { |
761 |
|
if (ref($h->{$sf}) eq 'ARRAY') { |
762 |
|
$out .= '^' . $sf . join('^' . $sf, @{ $h->{$sf} }); |
763 |
|
} else { |
764 |
|
$out .= '^' . $sf . $h->{$sf}; |
765 |
|
} |
766 |
|
} |
767 |
|
return $out; |
768 |
|
} else { |
769 |
|
# FIXME this should probably be in alphabetical order instead of hash order |
770 |
|
values %{$h}; |
771 |
|
} |
772 |
} |
} |
773 |
} |
} |
774 |
|
|