#!/usr/bin/perl
$|=1;
open XMLFILE, "<$ARGV[0]";
my $rec = '';
my $line = '';
my $rem = '';
my $count = 0;

open XMLNEW, ">$ARGV[1]";
print XMLNEW "<collection>\n";
while (<XMLFILE>) {
    $line = $_;
    if ($line =~ m/(<subfield code="\-">|<\?xml version=")/) {
        next;
    }

    $rem .= $line;
    if ($rem =~ s/(<record>(.|[\s\r\n])+<\/record>)//) {
        $rec = $1;
        $rem =~ s/[\r\n]+((<\/record>)*)/$1/;

        $count++;
        if ($count >= $ARGV[2] && (!$ARGV[3] || $count <= $ARGV[3])) {
            print XMLNEW "$rec\n";
            if ($ARGV[3] && $count == $ARGV[3]) {
                last;
            }
        }

        if ($count % 250 == 1) {
            if ($count >= $ARGV[2] && (!$ARGV[3] || $count <= $ARGV[3])) {
                print '#';
            }
            else {
                print '-';
            }
        }
        elsif ($count % 10000 == 0) {
            print "\t$count\n";
        }
    }
}
print XMLNEW "</collection>";
print "\nTotal $count records\n$rem\n";
close XMLNEW;
close XMLFILE;

exit 0;
