#!/usr/bin/perl -w use strict; use XML::Twig; my $t= XML::Twig->new( twig_handlers => { node => sub { my( $t, $node)= @_; return unless( $node->has_children( 'child')); my $name= $node->first_child( 'name'); my $file= $name->text; $name->delete; print "in file $file\n"; # in real code open file $node->print; # in real code print to file print "\n\n"; $t->purge; # get rid of the node } })->parse( \*DATA); __DATA__ Parent Name Node 1 Node 2 Node 3 Node 4