use strict; use warnings; use XML::Simple; use Data::Dumper; my @forms = qw(first second third); my $tree; my $vxml; my $filename = 'vxml_tree.xml'; $vxml->{forms}->{$_} = ['dummy', { more_dummy => 'more' }] for (@forms); $tree->{system_1} = $vxml; print Dumper $tree; my $xs = new XML::Simple(); my $xml = $xs->XMLout($tree); open my $fh, '>', $filename or die $!; print $fh $xml; close $fh; $tree = $xs->XMLin($filename); print Dumper $tree;