well, if you don't understand OO programming I will go with the others, you should read Damians book, you don't even have to read through the whole book if you're starting with oo. But he explains OO like nobody else in my opinon.
There is a module called
CGI::Builder, it's only a bit more than 200 lines of code, its portable but it's OO and it is in the CGI namespace...
I use it in most of my projects nowdays, it's really great, far more hooks then
CGI::Application, which is the key if you want to break up your CGI code.