This definitely sounds like a permissions issue as opposed to a Perl issue, but a little more information might be helpful.
in reply to Strange DBM behavior
You mentioned about chmod'ing a file, so I'll assume you're using UNIX/Linux. You're using CGI::Carp, so I'll assume you're using this under a browser, and not running it by hand or via cron. Which probably means you're using Apache (since netcraft claim 62% of the net is using that anyway :-)
It sounds like what you need to do is verify that the directory your db files are in are writable by the user which Apache is running as, which would often be 'apache' or 'nobody' on a UNIX-like system. Additionally, make sure the pricelist.db is writable by that same user. If it isn't, it would block you from being able to access that DB, such as what is happening right now. Since you are unable to chmod it, you may have to do it as root. If you don't have root access, just ask your admin to make those dirs/files writable by the Apache process.