in reply to cgi or mod_perl

A good approach would be to write your code so that it can run under both plain CGI and mod_perl (or FastCGI or SpeedyCGI or PPerl for that matter).

Basically, this only means that you show some extra discipline concerning global variables, proper namespacing and such. Using a framework like CGI::Application takes you a long way here.

This way, you can have the extreme availability and ease-of-installation of pure CGI and if your site gets popular enough for performance issues to come into play, you can switch over to mod_perl. The code will continue to work (and be much faster, mainly due to eliminated startup time)

Making extensive use of mod_perl specific features (that would tie you into this architecture) is probably a lot of fun, but I do not think it is really worth the loss of flexibility.