[This function has been largely superseded by the tie function.]
This binds a dbm(3), ndbm(3), sdbm(3), gdbm(3), or Berkeley DB file to a
hash. HASH is the name of the hash. (Unlike normal open
, the first
argument is not a filehandle, even though it looks like one). DBNAME
is the name of the database (without the .dir or .pag extension if
any). If the database does not exist, it is created with protection
specified by MASK (as modified by the umask
). To prevent creation of
the database if it doesn't exist, you may specify a MODE
of 0, and the function will return a false value if it
can't find an existing database. If your system supports
only the older DBM functions, you may make only one dbmopen
call in your
program. In older versions of Perl, if your system had neither DBM nor
ndbm, calling dbmopen
produced a fatal error; it now falls back to
sdbm(3).
If you don't have write access to the DBM file, you can only read hash
variables, not set them. If you want to test whether you can write,
either use file tests or try setting a dummy hash entry inside an eval
to trap the error.
Note that functions such as keys
and values
may return huge lists
when used on large DBM files. You may prefer to use the each
function to iterate over large DBM files. Example:
See also AnyDBM_File for a more general description of the pros and cons of the various dbm approaches, as well as DB_File for a particularly rich implementation.
You can control which DBM library you use by loading that library before you call dbmopen():
Portability issues: dbmopen in perlport.