#!/usr/bin/perl use strict; use warnings FATAL => 'uninitialized'; use XML::Simple qw(:strict); use Data::Dumper; $| = 1; my %ref; # create 1st node push(@{$ref{'node'}},{ 'id' => 'net_1.2.3.0', 'desc' => ['network'], }); # create 2nd node push(@{$ref{'node'}},{ 'id' => 'ip_1.2.3.4', 'desc' => ['ipaddr'], }); my $xmlParser = XML::Simple->new(); my $fh;open $fh,'>','testfile.xml' or die "$!"; $xmlParser->XMLout(\%ref,( 'XMLDecl' => '', 'NoAttr' => 0, 'KeepRoot' => 0, 'RootName' => 'test', 'OutputFile' => $fh, 'AttrIndent' => 1, 'KeyAttr' => { 'node' => 'id' }, )); print Dumper \%ref; #### $VAR1 = { 'node' => [ { 'desc' => [ 'network' ], 'id' => 'net_1.2.3.0' }, { 'desc' => [ 'ipaddr' ], 'id' => 'ip_1.2.3.4' } ] }; #### network ipaddr