in reply to Veriable Length Array/Hash derived from CSV to populate an XML
It looks like you just need to use some recursion if %hash is of variable structure.
print "<SESSION>\n"; print_hash(\%hash); print "</SESSION>\n"; sub print_hash { my $hashref = shift; my $prefix = (@_ ? shift : '') . ' '; foreach my $key (sort keys %$hashref) { print "$prefix<$key>\n"; if (ref $hashref->{$key}) { print_hash($hashref->{$key}, $prefix); } else { print "$prefix $hashref->{$key}\n" } print "$prefix</$key>\n"; } }
Also, look at package solutions like XML::Simple to do all the xml generation for you.
use XML::Simple; use strict; ... print XMLout(\%hash, RootName => 'SESSION');
Update: Parameter processing updated to avoid warnings.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Veriable Length Array/Hash derived from CSV to populate an XML
by TheBigAmbulance (Acolyte) on Mar 29, 2011 at 19:22 UTC | |
by wind (Priest) on Mar 29, 2011 at 19:31 UTC |