#!/usr/bin/perl use strict; use warnings; use XML::Twig; use Time::Piece; my $file_to_read = 'input.xml'; my @elements_to_treat = qw(node1 node2 node3); delete_node(\@elements_to_treat); sub delete_node { my ($all_elements) = @_; my %handlers; for my $element (@$all_elements){ $handlers{$element} = sub { $_->delete() }; } my $dateLog = localtime->ymd('_'); my $file_to_write = $file_to_read.'-parsed_'.$dateLog.'.xml'; open my $fh_out, '>', $file_to_write or die "Could not open $file_to_write : $!"; $handlers{ '_default_' } = sub { $_[0]->flush($fh_out) }; my $twig = new XML::Twig( twig_handlers => \%handlers, pretty_print => 'indented', ); $twig->parsefile($file_to_read); close $fh_out; print "Created $file_to_write\n"; }