{ open my $fh, ">", ($c->{prefix} . "-HOLDINGS-MULT-$t$s.pg"); $MULTIFILE{"$t$s"} = $fh }
}
+ my $parallel_fields = $m->get_parallel_fields;
+
my $i = 0; # record counter
my $j = 0; # holdings counter
for my $sub ( sort keys %{$multis->{$tagid}} ) {
for my $value ( @{$rec->{tags}[$holdidx]{multi}{$sub}} ) {
my $fh = $MULTIFILE{"$tagid$sub"};
- print $fh join("\t", $rec->{egid}, $j, $value), "\n";
+ my $clean_value = $value;
+ $clean_value =~ s/[\r\n\t]//g;
+ print $fh join("\t", $rec->{egid}, $j, $clean_value), "\n";
}
}
push @out, '';
next;
}
+
+ # handle parallel fields
+ if (exists($parallel_fields->{$othertag})) {
+ my $num_fields = $#{ $rec->{tmap}{$othertag} };
+ my $tag_idx;
+ if ($holdidx > $num_fields) {
+ $tag_idx = -1;
+ } else {
+ $tag_idx = $rec->{tmap}{$othertag}[$holdidx];
+ }
+ for my $sub ( sort keys %{ $parallel_fields->{$othertag } } ) {
+ push @out, $tag_idx > -1 ? $rec->{tags}[$tag_idx]{parallel}{$sub}->[0] : '';
+ print HOLDINGS "l_", $m->name($rec->{tags}[$tag_idx]{tag}, $sub), ", " unless $j;
+ }
+ }
+
# handle only first other tag unless it is known to be multi
my $limit = 0;
if (exists($multis->{$othertag})) {
next if $m->first_only($rec->{tags}[$tag_idx]{tag}, $sub) and ($k > 1);
for my $value ( @{$rec->{tags}[$tag_idx]{multi}{$sub}} ) {
my $fh = $MULTIFILE{"$othertag$sub"};
- print $fh normalize_output(join("\t", $rec->{egid}, $j, $value)), "\n";
+ my $clean_value = $value;
+ $clean_value =~ s/[\r\n\t]//g;
+ print $fh normalize_output(join("\t", $rec->{egid}, $j, $clean_value)), "\n";
}
}
}