| 1 |
10 |
dpavlin |
# |
| 2 |
678 |
dpavlin |
# hash_sf($row_data,'field'[,'subfield']) |
| 3 |
10 |
dpavlin |
# |
| 4 |
678 |
dpavlin |
# e.g. hash_sf($row,'700','a') |
| 5 |
10 |
dpavlin |
# |
| 6 |
678 |
dpavlin |
sub hash_sf { |
| 7 |
10 |
dpavlin |
my $row = shift @_; |
| 8 |
678 |
dpavlin |
my $field = shift @_; |
| 9 |
10 |
dpavlin |
my $subfield = shift @_; |
| 10 |
|
|
|
| 11 |
29 |
dpavlin |
my $i = shift @_ || 0; |
| 12 |
|
|
|
| 13 |
|
|
my $out; |
| 14 |
|
|
|
| 15 |
678 |
dpavlin |
if ($row->{$field}->[$i]) { |
| 16 |
45 |
dpavlin |
if (! $subfield) { |
| 17 |
10 |
dpavlin |
# subfield list undef, empty or no defined subfields for this record |
| 18 |
678 |
dpavlin |
my $all_sf = $row->{record}->{$field}->[$i] || confess "can't find field $field:$i",Dumper($row); |
| 19 |
|
|
$all_sf =~ s/[\^\$]./ /g; # nuke definitions |
| 20 |
29 |
dpavlin |
return $all_sf; |
| 21 |
45 |
dpavlin |
} |
| 22 |
678 |
dpavlin |
my $sf = $row->{$field}->[$i]->{$subfield}; |
| 23 |
619 |
dpavlin |
return $sf if ($sf); |
| 24 |
10 |
dpavlin |
} |
| 25 |
|
|
} |
| 26 |
|
|
|
| 27 |
|
|
1; |
| 28 |
|
|
|