use strict; use XML::Twig; my $hash = { name => 'bob', value1 => 'blah', value2 => 'blah2', }; my $twig = XML::Twig->new(pretty_print => 'indented'); my $elt = create_element(newPhone => $hash); $twig->set_root($elt); $twig->print(); sub create_element { my $gi = shift; my $data = shift; my $t = XML::Twig::Elt->new($gi); if (ref $data) { while (my ($k,$v) = each(%$data)) { create_element($k, $v)->paste(last_child => $t); } } else { $t->set_text($data); } $t; }