3 # Polaris exports patrons in MARC format. This script turns the data into a TSV that can be imported with \copy.
7 use MARC::File::USMARC;
8 use Equinox::Migration::SubfieldMapper 1.004;
10 my $file = MARC::File::USMARC->in("PATRONS.mrc");
12 my @modlist = qw( multi ignoremulti bib required ); # Not sure what these do, but I'll cargo-cult it for now
13 my $mapfile = 'patron.map';
15 # initialize map and taglist
16 my $sfmap = Equinox::Migration::SubfieldMapper->new( file => $mapfile, mods => \@modlist );
18 my $temp = $sfmap->tags(); # $temp is an arrayref
19 my @fields = sort @$temp;
21 while ( my $marc = $file->next() ) {
23 print $serial++ . "\t";
24 print $marc->leader() . "\t";
25 print $marc->field('001')->data() . "\t";
26 print $marc->field('005')->data() . "\t";
27 print $marc->field('008')->data() . "\t";
28 # Fields and subfields beyond the preliminaries
29 foreach my $tag (@fields) {
30 my $temp = $sfmap->subfields($tag);
31 foreach my $sf (sort @$temp) {
32 if ($sfmap->has($tag, $sf)) {
33 print $marc->subfield($tag, $sf);