use strict; use warnings; use XML::Twig; my $twig = XML::Twig->new(pretty_print => 'indented'); my $data = do {local $/;}; $twig->parse($data); my $root = $twig->root; my @trans = $root->children; for my $trans (@trans) { next unless $trans->att('kool') eq 'kool'; my $item = XML::Twig::Elt->new(item => { id => 'maxis'}); my $assignee = XML::Twig::Elt->new(assignee => 'Jill') ->paste(last_child => $item); my $status = XML::Twig::Elt->new(status => 'con') ->paste(last_child => $item); $item->paste(last_child => $trans); } $twig->print; __DATA__ contacted jack contacted jack