Some suggestions in case you want to use flat files...
in reply to Append to a busy flat-file db without leaving customer in lurch
Find out why flock is failing. I'm pretty sure on most platforms that it blocks until the lock occurs (unless you use LOCK_NB). What is '$!' when it dies?
If you don't need updates to show up immediately in the database, defer them. For example, write your output to a separate file and continue on. Then have a single process periodically come along and read these other files and append to the database.
Depending on your platform and filesystem (check your docs), you *may* be able to get away with no lock at all while opening a file in append mode. Some OSs arbitrate appenders for you if you are writing a single line of text since it's a very common operation (esp for log files). FWIW, I personally wouldn't do this since then the code relies on a specific setup and it is hard to test this to make sure it's working, but YMMV. Update: After thinking about this, it probably also depends on you printing only small, single lines of text at a time. Another reason to avoid it.
Since you care that the 'print' works, check the error code for it. If you run out of disk space, your code can silently fail.