in reply to Which databases to use?

If you are going to stick with a DBM format, you are probably best off going with BerkeleyDB since it can easily handle large text fields and has a variety of locking options. You might also look at DBM::Deep for an alternative. OTOH, if you use a relational database system you can leverage on the many modules already created to do things like the CGI interaction, locking, etc. Going with a relational database doesn't necessarily mean using SQL since any DBI accessible database can be accessed with multi-level hashes or objects with modules like Tie::DBI, AnyData, or Class::DBI. Learning SQL won't hurt either your career prospects or your code reuse (though it may warp your mind). If you need to transition your text file to a relational database, modules like DBD::CSV and DBD::AnyData can make that pretty painless.