I can understand your pain... Often it is nice to be able to just connect to an already running process, give it a keyword and get back the answer that has already been loaded. The way that would probably be easiest to do this would be with a client/server model. In essence, that is what you have with a DBI/RDBMS solution and that is what you get with a LWP/mod_perl solution.
Sometimes, a solution like that may too much overhead (maintaining your Apache, trying to maintain the database). There are a couple of solutions that you could look at to do the client server for you. There is
RPC::XML, which would give you a nice procedural interface and has the option of not using Apache at all. Another possibility is to use
Net::Server, on which you can write your own interface. It has the ability to be HUPed (restarted) which would allow for rereading of configuration files. And, if you run into a high load situation you can choose to do a Net::Server::PreFork which manages child processes in the same way that Apache would -- except that its pure Perl.
There are many options, it just depends on what you need.
my @a=qw(random brilliant braindead); print $a[rand(@a)];