in reply to Should One Use CGI.pm to Generate HTML?

For instance, I was surprised to note that the startform method does not include a built-in parameter to give the form a name.

This works for me: start_form(-name=>"form_name")

A lot of things aren't documented in the CGI.pm docs because they're redundant. You can generally assume that any parameter like that can be passed just as I did it above and it will work. Generally, this is the way to pass any complex arguments to any CGI function. The "standard" arguments (that require no named parameters) tend to be very basic. Otherwise, you'd have functions that take a ton of standard arguments, which makes it difficult if the only one you care about is the 6th. The idea is to make your CGI.pm code more readable, not less. A million unnamed arguments for each function is impossible to maintain.

I think other posters have already neatly summed up the various reasons people use or don't use CGI.pm. In the end it's personal preference. I've heard people in the past say that using CGI.pm to build your HTML pages means you don't have to be an expert on HTML, but I've found that in practice, you have to really know HTML before these CGI.pm functions will make sense when building the pages themselves.