Very cool script. I did notice that either CGI.pm or html2cgi hiccup a bit with lists, whether or not the <li> tag is closed with a </li>.
The following HTML chunk
<title>There is no title</title>
use CGI "-no_debug", ":html", "comment", "header";
start_html("-title" => "There is no title"),
"First item ",
"Second item ",
I have not run this back through CGI.pm to see the output, but it seems that something is adding an extra <ul> in there. (It adds an extra one for each <li> tag.)
"Excellent. Release the hounds." -- Monty Burns.