in reply to Clarifications in subroutines, CGI.pm, HTML::Template and performance
No expert here but...
I would restrict "use CGI" to common_subs.pm and let it handle all CGI related stuff. In my main script, I wouldn't expect to call "use CGI" since everything that I need for CGI parsing should already have been done via common_subs.
Without a templating system like HTML::Template, you would most likely be mixing program code with html. This can lead to ugly, bloated code and possibly maintenance problems, especially as your code grows. So it's better to make use of a templating engine such as HTML::Template to allow you to move the html out of your code. That way, the resultant code is leaner and so easier to read and maintain.