in reply to perl cgi and flat textfile
I agree with the previous posts, and I just wanted to point out something more.
When dealing with CGIs and text file databases, locking is highly recommended, because of the nature of HTTP requests themselves.
You should also consider users pressing submitting many times or reloading the page, they both impact negatively your flat file DB in case operations that change data are involved.
I personally like to use text files when it makes sense, e.g. when data needs to be implicitly human readable or when dealing with pre-existing databases and file formats.
In other situations I tend to prefer DBM files, woinderfully supported by perl (e.g. MLDBM) and interoperable as well, or the DBI interface, which can operate on text files when/if needed, as already pointed out.