Disagreeing is fine, this is perl after all, but my main criticism of CGI.pm's html generating function is not that they are easy to use, it is that they are very ugly. Do you honestly find:
print table(tr(td(a(-href=>'http://google.com',"http://google.com"))))
easier to read than
print "<table><tr><td><a href='http://google.com'>http://google.com</a
+></td></tr></table>";
?
As for templates, I've yet to see a situation where *not* using templates is better design. People often refuse to use them, mostly due to false laziness (but occasionally it is a good laziness), but that doesn't make it good design.