What do you mean by a cleanup nightmare? Too many daemons running that need to be cleaned up, or your code leaves too many globals around so re-executing in the same process is dangerous?
If you are worried about too many daemons running around, then look at PersistentPerl instead (also called SpeedyCGI). The -g switch will allow you to run all your perl scripts from within the same daemon which will fork off as many child processes as you need. You can also set the child processes to die after a certain amount of inactivity.
If it is your code that you are worried about, then no persistent environment will help you out unless you start off with a fresh interpreter everytime (or cleanup your code).
PersistentPerl comes with an Apache module as well, which means you can save the fork of a CGI process as well when a new request comes in.