Line # Revision Author
1 1 dpavlin #!/usr/bin/perl -w
2
3 use strict;
4 use blib;
5
6 use MARC::Fast;
7 4 dpavlin use Getopt::Std;
8 26 dpavlin use Data::Dump qw/dump/;
9 1 dpavlin
10 7 dpavlin =head1 NAME
11
12 dump_fastmarc.pl - display MARC records
13
14 =head2 USAGE
15
16 dump_fastmarc.pl /path/to/dump.marc
17
18 =head2 OPTIONS
19
20 =over 16
21
22 10 dpavlin =item -o offset
23 7 dpavlin
24 10 dpavlin dump records starting with C<offset>
25 7 dpavlin
26 =item -l limit
27
28 10 dpavlin dump just C<limit> records
29 7 dpavlin
30 =item -h
31
32 dump result of C<to_hash> on record
33
34 =item -d
35
36 turn debugging output on
37
38 =back
39
40 =cut
41
42 4 dpavlin my %opt;
43 10 dpavlin getopts('do:l:h', \%opt);
44 1 dpavlin
45 10 dpavlin my $file = shift @ARGV || die "usage: $0 [-o offset] [-l limit] [-h] [-d] file.marc\n";
46 4 dpavlin
47 1 dpavlin my $marc = new MARC::Fast(
48 marcdb => $file,
49 7 dpavlin debug => $opt{d},
50 1 dpavlin );
51
52
53 4 dpavlin my $min = 1;
54 my $max = $marc->count;
55
56 7 dpavlin if (my $mfn = $opt{n}) {
57 4 dpavlin $min = $max = $mfn;
58 6 dpavlin print STDERR "Dumping $mfn only\n";
59 7 dpavlin } elsif (my $limit = $opt{l}) {
60 print STDERR "$file has $max records, using first $limit\n";
61 $max = $limit;
62 6 dpavlin } else {
63 print STDERR "$file has $max records...\n";
64 4 dpavlin }
65
66 for my $mfn ($min .. $max) {
67 1 dpavlin my $rec = $marc->fetch($mfn) || next;
68 26 dpavlin print "rec is ",dump($rec) if ($opt{d});
69 1 dpavlin print "REC $mfn\n";
70 22 dpavlin print $marc->last_leader,"\n";
71 11 dpavlin print $marc->to_ascii($mfn),"\n";
72 28 dpavlin print "hash is ",dump($marc->to_hash($mfn, include_subfields => 1)) if ($opt{h});
73 1 dpavlin }