in reply to How to organize a CGI project?
Some wisdom(hopefully) from my experience.
Keeping functions that are common to more than one file in a seprate module is a good idea.
What I like to do is to keep all business logic in one file and all display code in another. This gives me a 3 tier model: data, logic, and presentation. While I find this helpful you may not. Use whatever works best in your situation.
You didn't mention it in your post but I would recommend using a templating system, such as HTML::Template. There are several other templating systems available so take a look at a few of them before deciding which one will work best for this project.
Hopefully this will help out a little.