#!/usr/bin/perl use warnings; use strict; use XML::Twig; my ( $in_XML_file, $out_XML_file ) = @ARGV; # create objects my $ref_reader = XML::Twig->new( twig_handlers => { 'policyrules' => \&policyrules_handler, 'Rule' => \&rule_handler } ); $ref_reader->parsefile( $in_XML_file ) or die " $in_XML_file is not parsable\n"; open my $out_fh, '>', $out_XML_file or die " $out_XML_file cannot be written: $!"; $ref_reader->print( $out_fh ); close $out_fh; sub policyrules_handler { my( $t, $elt)= @_; # arguments for all twig_handlers # $elt->delete; } sub rule_handler { my( $t, $elt)= @_; # arguments for all twig_handlers $elt->set_att( 'new_attr' => 'dummyValue' ); }