#!/usr/bin/perl -w
use strict;
-use blib;
+use lib 'lib';
use MARC::Fast;
use Getopt::Std;
-use Data::Dumper;
+use Data::Dump qw/dump/;
=head1 NAME
dump just C<limit> records
+=item -n mfn
+
+dump single C<mfn> record (same as C<-o mfn -l 1>)
+
=item -h
dump result of C<to_hash> on record
turn debugging output on
+=item -t
+
+dump tsv file for TokyoCabinet import
+
=back
=cut
my %opt;
-getopts('do:l:h', \%opt);
+getopts('do:l:n:ht', \%opt);
-my $file = shift @ARGV || die "usage: $0 [-o offset] [-l limit] [-h] [-d] file.marc\n";
+my $file = shift @ARGV || die "usage: $0 [-o offset] [-l limit] [-n single_mfn] [-h] [-d] [-t] file.marc\n";
my $marc = new MARC::Fast(
marcdb => $file,
debug => $opt{d},
);
-
-my $min = 1;
+my $min = $opt{o} || 1;
my $max = $marc->count;
if (my $mfn = $opt{n}) {
print STDERR "Dumping $mfn only\n";
} elsif (my $limit = $opt{l}) {
print STDERR "$file has $max records, using first $limit\n";
- $max = $limit;
+ $max = $min + $limit - 1;
} else {
print STDERR "$file has $max records...\n";
}
for my $mfn ($min .. $max) {
my $rec = $marc->fetch($mfn) || next;
- print "rec is ",Dumper($rec) if ($opt{d});
- print "REC $mfn\n";
- print $marc->last_leader,"\n";
- print $marc->to_ascii($mfn),"\n";
- print "hash is ",Dumper($marc->to_hash($mfn, include_subfields => 1)) if ($opt{h});
+ warn "rec is ",dump($rec) if ($opt{d});
+ if ( $opt{t} ) {
+ print "rec\t$mfn\tleader\t", $marc->last_leader, "\t";
+ my $ascii = $marc->to_ascii($mfn);
+ $ascii =~ s{\n}{\t}gs;
+ print "$ascii\n";
+ } else {
+ print "REC $mfn\n";
+ print $marc->last_leader,"\n";
+ print $marc->to_ascii($mfn),"\n";
+ }
+ warn "hash is ",dump($marc->to_hash($mfn, include_subfields => 1)) if ($opt{h});
}