#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple qw(:strict);
my $userref = ();
$userref->{0}{'hash'}{'name'} = 'joe';
$userref->{0}{'hash'}{'type'} = 'user';
$userref->{1}{'hash'}{'name'} = 'mary';
$userref->{1}{'hash'}{'type'} = 'user';
my $XmlRef = ();
# loop thru all keys in userref
for my $key(sort keys %$userref){
# the key name
my $keyname = 'key'.$key;
my $cnt = scalar keys %{$XmlRef->{$keyname}{'devices'}};
my $i=0;
for my $foo(keys %{$userref->{$key}{'hash'}}){
$XmlRef->{$keyname}{'devices'}{'dev'.$cnt}{'param'}{$foo}{'content'} = [ $userref->{$key}{'hash'}{$foo} ];
$i+=1;
}
}
# write XML to file
my $tmpfile = '/tmp/testfile.xml';
my $fh;
open $fh, '>', $tmpfile or die "open($tmpfile): $!\n";
XMLout($XmlRef,
XMLDecl => '',
ContentKey => '-content',
NoAttr => 0,
OutputFile => $fh,
KeyAttr => { 'param' => 'id' },
AttrIndent => 1,
);
close $fh;
####
joe
user
mary
user
####
joe
user