#!/usr/bin/perl

use strict;
use Getopt::Std;
use MARC::Field;
use MARC::File::USMARC;
$| = 1;

my %options=();
getopts("t:",\%options);
my @tags = split(/,/, $options{t});

foreach my $file (@ARGV) {
    my $marcfile = MARC::File::USMARC->in( "$file" );

    my $field_count = 0;

    while (my $record = $marcfile->next()) {
        foreach my $t (@tags) {
            my @fields = $record->field($t);
            $field_count = scalar(@fields);

            next if $field_count == 0;

            my $f = $fields[0];
            for (my $i = 1; $i < $field_count; $i++) {
                foreach my $sf ($fields[$i]->subfields()) {
                    $f->add_subfields($sf->[0] => $sf->[1]);
                }
            }

            $record->delete_fields(@fields);
            $record->insert_fields_ordered($f);
        }
        print $record->as_usmarc;
    }

    $marcfile->close();
}

exit 0;
