my $multis = $m->get_multis;
my %MULTIFILE = ();
for my $t ( keys %{$multis} ) {
- for my $s ( keys %{$t})
+ for my $s ( keys %{$multis->{$t}})
{ open my $fh, ">", ($c->{prefix} . "-HOLDINGS-MULT-$t$s.pg"); $MULTIFILE{"$t$s"} = $fh }
}
while ( $m->{data}{recs}[$i] ) {
print HOLDINGS "BEGIN;\n\negid\thseq\t" unless $j;
my $rec = $m->{data}{recs}[$i];
+ my $k = 0; # holding-within-record pointer
# for each holdings tag in the record...
- for my $holdidx ( @{$rec->{tmap}{ $c->{holdings} }} ) {
+ while ( $rec->{tmap}{ $c->{holdings} }[$k] ) {
+ my $holdidx = $rec->{tmap}{ $c->{holdings} }[$k];
my $tagid = $rec->{tags}[$holdidx]{tag};
+ $k++;
my @out = (); # clear the output buffer
push @out, $rec->{egid}; # slug in the egid first thing
# handle holdings multis
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" }
+ for my $value ( @{$rec->{tags}[$holdidx]{multi}{$sub}} ) {
+ my $fh = $MULTIFILE{"$tagid$sub"};
+ print $fh join("\t", $rec->{egid}, $j, $value), "\n";
+ }
}
my $idx = $rec->{tmap}{$othertag}[0]; # get index into tags struct
for my $sub ( sort keys %{$rec->{tags}[$idx]{uni}} ) {
push @out, $rec->{tags}[$idx]{uni}{$sub};
- print "l_", $m->name($rec->{tags}[$idx]{tag}, $sub), "\t"
- unless $j;
+ print "l_", $m->name($rec->{tags}[$idx]{tag}, $sub), "\t" unless $j;
}
}
print HOLDINGS join("\t", @out);
print HOLDINGS "\n";
$j++;
+
+ @out = undef;
}
$i++;
print "\r$i";