--- trunk/run.pl 2006/07/02 10:27:06 558 +++ trunk/run.pl 2006/07/03 22:12:13 576 @@ -77,6 +77,10 @@ By default turned on if C<--marc-normalize> is used. You can disable lint messages with C<--no-marc-lint>. +=item --marc-dump + +Force dump or input and marc record for debugging. + =back =cut @@ -92,6 +96,7 @@ my $validate_path; my ($marc_normalize, $marc_output); my $marc_lint = 1; +my $marc_dump = 0; GetOptions( "limit=i" => \$limit, @@ -100,12 +105,13 @@ "one=s" => \$only_filter, "only=s" => \$only_filter, "config" => \$config, - "debug" => \$debug, + "debug+" => \$debug, "stats" => \$stats, "validate=s" => \$validate_path, "marc-normalize=s" => \$marc_normalize, "marc-output=s" => \$marc_output, "marc-lint!" => \$marc_lint, + "marc-dump!" => \$marc_dump, ); $config = LoadFile($config); @@ -294,7 +300,6 @@ $log->error( "MFN $mfn validation errors:\n", join("\n", @errors) ) if (@errors); } - my $ds = WebPAC::Normalize::data_structure( row => $row, rules => $rules, @@ -322,15 +327,37 @@ $log->warn("MARC record $mfn is empty, skipping"); } else { $marc->add_fields( @marc_fields ); + + # tweak leader + if (my $new_l = WebPAC::Normalize::marc_leader()) { + + my $leader = $marc->leader; + + foreach my $o ( keys %$new_l ) { + my $insert = $new_l->{$o}; + $leader = substr($leader, 0, $o) . + $insert . substr($leader, $o+length($insert)); + } + $marc->leader( $leader ); + } + if ($marc_lint) { $lint->check_record( $marc ); my $err = join( "\n", $lint->warnings ); $log->error("MARC lint detected warning on MFN $mfn\n", - "Original imput row: ",dump($row), "\n", - "Normalized MARC row: ",dump(@marc_fields), "\n", - "MARC lint warnings: ",$err,"\n" + "<<<<< Original imput row:\n",dump($row), "\n", + ">>>>> Normalized MARC row: leader: [", $marc->leader(), "]\n", dump(@marc_fields), "\n", + "!!!!! MARC lint warnings:\n",$err,"\n" ) if ($err); } + + if ($marc_dump) { + $log->info("MARC record on MFN $mfn\n", + "<<<<< Original imput row:\n",dump($row), "\n", + ">>>>> Normalized MARC row: leader: [", $marc->leader(), "]\n", dump(@marc_fields), "\n", + ); + } + print $marc_fh $marc->as_usmarc; } }