From 2332c1d977cc59a267ea329e5fadc0e52ed8307a Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Thu, 12 Sep 2013 16:43:17 +0200 Subject: [PATCH] added leader --- crolist2marc.pl | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/crolist2marc.pl b/crolist2marc.pl index fdb5402..803da79 100755 --- a/crolist2marc.pl +++ b/crolist2marc.pl @@ -23,7 +23,7 @@ sub csv_file { $lines++; if ( ! $text ) { - print STDERR "\nSKIP $file +$lines [$_] "; + print STDERR "\nSKIP $file +$lines [$_] " if $idsl; next; } @@ -69,6 +69,27 @@ csv_file( 'LONTAG.csv', sub { return ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $text ); }); +csv_file( 'IDNTAG.csv', sub { + my $line = shift; + + my ( $idsl, $tag, $STSL, $KZVS, $BIBRAZ, $HIRAZ, $KPS, $OKO ) = split(/,/,$_); + + my @leader; + $leader[5] = $STSL; + $leader[6] = $KZVS; + $leader[7] = $BIBRAZ; + $leader[8] = $HIRAZ; + $leader[17] = $KPS; + $leader[18] = $OKO; + + $leader[23] = ' '; # last char; + + my $full = join('', map { defined $_ ? $_ : ' ' } @leader); + $data->{$idsl}->{'leader'} = $full; + return; +}); + + print STDERR "\n# getting all ids "; my @ids = keys %$data; print STDERR scalar(@ids), " found\n"; @@ -81,9 +102,13 @@ foreach my $id ( @ids ) { my $rec = MARC::Record->new; $rec->encoding( 'UTF-8' ); foreach my $field ( sort keys %{ $data->{$id} } ) { + if ( $field eq 'leader' ) { + $rec->leader( $data->{$id}->{$field} ); + next; + } foreach my $arr ( @{ $data->{$id}->{$field} } ) { if ( ! $arr ) { - print STDERR "SKIPPED $id $field ",dump( $data->{$id} ); + print STDERR "SKIPPED $id $field ",dump( $data->{$id}->{$field} ); next; } $rec->add_fields( $field, @$arr ); -- 2.20.1