I know I'm probably the last person on earth using dbmopen() to tie hashes, but here's a question -- if I do this:
dbmopen(%my_hash,'my_data',0777) || die "$!";
and the file has not yet been created, it will automagically be created. The only error I'm likely to get is if I don't have permission to create files in that directory or something.

Is there a way to find out if a database file already exists before I open it and start (possibly) clobbering its values?

I know on the particular system I'm using right now, that implies the creation of a file called 'my_data.db', but on another system, it implies the creation of two files, 'my_data.pag' and 'my_data.dir' -- because it uses NDBM, or something.

In my case, I know the system so I can just do an "if file exists 'my_data.db'", but if I can't be sure what the filename is every time, can I in some other way logically test whether there's already a database file before I do this:

dbmopen(%my_hash,'my_data',0777) || die "$!"; $my_hash{'something_really_important'} = '';

?
--

“Every bit of code is either naturally related to the problem at hand, or else it's an accidental side effect of the fact that you happened to solve the problem using a digital computer.”
M-J D

In reply to dbmopen() test if file exists already? by Cody Pendant

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.