In general templates are the way to go. I'll use CGI shortcuts for small scripts that may shift around a lot as it makes installing trivial. One place to look for problems. I've also used them on a few projects for validating data. Meaning I subclassed CGI to record what fields it outputs so I know what to expect automatically on the next submission or to add other hooks and behaviours.
That being said, I don't actually type them. I have a HTML 2 CGI script based on a
that takes any html page and translates it to CGI.pm syntax. That way changes are nice and easy.
Use whatever makes sense for the job IMHO.