It looks like $data is undefined.
#!/bin/env perl
use strict;
use warnings;
use XML::Simple;
# From https://metacpan.org/pod/XML::Simple#QUICK-START
my $data = {
'logdir' => '/var/log/foo/',
'debugfile' => '/tmp/foo.debug',
'server' => {
'sahara' => {
'osversion' => '2.6',
'osname' => 'solaris',
'address' => [ '10.0.0.101', '10.0.1.101' ]
},
'gobi' => {
'osversion' => '6.5',
'osname' => 'irix',
'address' => [ '10.0.0.102' ]
},
'kalahari' => {
'osversion' => '2.0.34',
'osname' => 'linux',
'address' => [ '10.0.0.103', '10.0.1.103' ]
}
}
};
print "XMLout with data defined:\n\n", xml_out($data), "\n\n";
#print "XMLout with data undefined:\n\n", xml_out(undef), "\n\n";
sub xml_out {
my $data = shift;
my $xmlout = XMLout($data, NoAttr => 1, RootName => undef, SuppressE
+mpty => 0);
return '<xml version="1.0" encoding="UTF-8">' . "\n$xmlout</xml>";
}
Running this produces no warning but if you uncomment the second print it does.