my $j = 0; # holdings counter
while ( $m->{data}{recs}[$i] ) {
- print HOLDINGS "BEGIN;\n\negid\thseq\t" unless $j;
+ print HOLDINGS "BEGIN;\n\negid, hseq, " 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 ( defined $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
# grab the unary mappings and slug 'em in
for my $sub ( sort keys %{$rec->{tags}[$holdidx]{uni}} ) {
push @out, $rec->{tags}[$holdidx]{uni}{$sub};
- print HOLDINGS "l_", $m->name($tagid, $sub),"\t" unless $j;
+ print HOLDINGS "l_", $m->name($tagid, $sub),", " unless $j;
}
# handle holdings multis
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"
+ print HOLDINGS "l_", $m->name($rec->{tags}[$idx]{tag}, $sub), ", "
unless $j;
}
}
print HOLDINGS join("\t", @out);
print HOLDINGS "\n";
$j++;
+
+ @out = undef;
}
$i++;
print "\r$i";
if ($c->{map} and !($c->{holdings} and $c->{copyid}));
show_version() if $c->{version};
+ if ($c->{prefix} and !$c->{marcfile}) {
+ $c->{marcfile} = $c->{prefix} . ".clean.marc.xml";
+ }
+
my @keys = keys %{$c};
for my $key ('prefix', 'marcfile')
{ push @missing, $key unless $c->{$key} }
REQUIRED ARGUMENTS
--prefix -p Prefix string for output filenames
--marcfile -m MARCXML to use as source data
+ Defaults to 'PREFIX.clean.marc.xml'
SAMPLING ARGUMENTS
--sample -s Generate a report of all tags in the MARC data