in reply to CGI data from memory w/o mod_perl
Have you considered DBD::RAM It effectively gives you a SQL/DBI database in memory so does what you want.
Structurally I would have a CGI module and a separate Data Module. Define the interface between them and you are then free to modify the data handling within the Data Module over time. If you make it DBD::RAM SQL/DBI based moving to a real database is a 1 line change Still charge $10K to do it though....just so your clients know they are getting value :-)
Modperl is the way to go if speed is the issue. The major overhead with Perl CGIs is starting up a new process rather than disk access from that process although this will of course vary. With modperl you avoid this overhead plus you get data persistence to boot. You should have a look at Apache::Session which usually works with modperl but is also able to work with vanilla CGI (so says the docs)