--- /dev/null
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+foreach my $file (@ARGV) {
+ clean_empty_datafields($file);
+}
+
+sub clean_empty_datafields {
+ my $file = shift;
+
+ # Empty datafields anger MARC::File::XML
+ open(FH, '<', $file) or die $!;
+ open(CLEAN, '>', "$file.new");
+
+ my ($trim, $lastline) = (0, '');
+ while (<FH>) {
+ if ($_ =~ m#</datafield># and $lastline =~ m#<datafield#) {
+ $trim = 1;
+ } elsif ($trim) {
+ $trim = 0;
+ } else {
+ print CLEAN $lastline;
+ $trim = 0;
+ }
+
+ $lastline = $_;
+ }
+ print CLEAN $lastline;
+
+ close(FH);
+ close(CLEAN);
+}