in reply to mod_perl and cgi detente

Is there any reason you aren't looking to wrap your old CGI apps in ModPerl::PerlRun or ModPerl::Registry? That's usually what people do when they move them over.

Aside from that, you'll have to tell us what isn't porting cleanly from your CGIs in order to get advice. I saw that you mentioned CGI.pm vs. Apache::Request for parsing params. They are intended to offer essentially the same API. If you want them to be exactly the same, just CGI.pm in all cases. It works fine under mod_perl and the performance difference is not significant for most sites.