--- trunk/isis_sf.pm 2003/01/16 17:35:54 10 +++ trunk/isis_sf.pm 2003/07/04 20:11:48 62 @@ -1,21 +1,26 @@ # -# isis_sf($isis_row,'isis_field'[,'subfield']) +# get_sf($isis_row,'isis_field'[,'subfield']) # -# e.g. isis_sf($row,'700','a') +# e.g. get_sf($row,'700','a') # -sub isis_sf { +sub get_sf { my $row = shift @_; my $isis_id = shift @_; my $subfield = shift @_; - if ($row->{$isis_id}->[0]) { - my $sf = OpenIsis::subfields($row->{$isis_id}->[0]); - if (! defined $subfield || length($subfield) == 0) { + my $i = shift @_ || 0; + + my $out; + + if ($row->{$isis_id}->[$i]) { + if (! $subfield) { # subfield list undef, empty or no defined subfields for this record - my $all_sf = $row->{$isis_id}->[0]; - $all_sf =~ s/\^./ /g; nuke definirions - return $all_sf; - } elsif ($sf->{$subfield}) { + my $all_sf = $row->{$isis_id}->[$i]; + $all_sf =~ s/\^./ /g; # nuke definitions + return $all_sf; + } + my $sf = OpenIsis::subfields($row->{$isis_id}->[$i]); + if ($sf->{$subfield}) { return $sf->{$subfield}; } }