Now, please! don’t do this directly. The Vars() thing is a back-compat shim to perl4 days and you should always white-list and filter your user input, not blanket echo. But you can experiment with this–
use strict;
use warnings;
use CGI::Pretty ":standard";
use XML::Simple;
if ( my %params = CGI::Vars() )
{
$_ = [ split /\0/ ] for values %params;
print header("application/xml"),
XMLout(\%params);
}
else
{
print header(),
start_html(),
h1("OHAI: I CAN HAZ HTML FORMZ?"),
start_form();
print p(textfield("birthday")) for 1 .. 5;
print end_form(),
end_html();
}
__END__
perl pm-1019080 'birthday=1:356;birthday=2:365'
Content-Type: application/xml; charset=ISO-8859-1
<opt>
<birthday>1:356</birthday>
<birthday>2:365</birthday>
</opt>
You can replace CGI::Pretty with CGI. It’s just nicer to inspect with Pretty.