in reply to mod_perl and semi-dynamic data

If the data is small enough, just cache it in memory. All you need to do is put it in a global, and it will stay there. To reduce the memory footprint, you can load this in your startup.pl before apache forks. This makes it shared (by copy-on-write) between all the apache processes.

If it's too big for that, just keep it in a file and load it each time. You can use Storable for reading and writing it, which is usually faster than normal parsing if it's a complex structure.