sub serialize { my $writer=shift; my $tag=shift; my $value=shift; if ($tag eq 0) { $writer->characters($value); } else { $writer->startTag($tag,%{$value->[0]}); shift(@$value); while (@$value) { my $t=shift(@$value); my $v=shift(@$value); serialize($writer,$t,$v); } $writer->endTag(); } }