die "Argument 'marcfile' must be specified\n" unless ($args{marcfile});
if (-r $args{marcfile}) {
$self->{twig} = XML::Twig->new;
- $self->{twig}->parsefile($args{marcfile});
- my @records = $self->{twig}->root->children;
- $self->{data}{recs} = \@records;
+ $self->{conf}{marc} = $args{marcfile};
} else {
die "Can't open marc file: $!\n";
}
sub parse_records {
my ($self) = @_;
- for my $record ( @{$self->{data}{recs}} ) {
+ $self->{twig}->parsefile( $self->{conf}{marc} );
+ for my $record ( $self->{twig}->root->children ) {
my @fields = $record->children;
for my $f (@fields)
- { $self->process_field($f) }
+ { $self->process_field($f); $f->purge }
# cleanup memory and increment pointer
$record->purge;
if ($map and $map->has($tag)) {
my @subs = $field->children('subfield');
for my $sub (@subs)
- { $self->process_subs($tag, $sub) }
+ { $self->process_subs($tag, $sub); $sub->purge }
}
}