You didn't say was format of XML, whether you are going with the basics or using ExcelXML, but this works for me.
use strict;
use warnings;
use XML::Element;
my $root = new XML::Element('root');
foreach my $app ( keys %appsrvr ) {
my $el = new XML::Element( $app , %{$appsrvr{$app}} );
$root->push_content($el);
}
print $root->as_XML();
It's untested but should work. Currently I push all my xml to a really basic form, then use XSL StyleSheets to transform into the requested formats ( html, csv, ExcelXML, etc. );
Don
WHITEPAGES.COM | INC
Everything I've learned in life can be summed up in a small perl script!