Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OpenBSD-3.6)
Apropos / Subsearch:
optional field

SDBM_File(3p)    Perl Programmers Reference Guide   SDBM_File(3p)

       SDBM_File - Tied access to sdbm files

        use Fcntl;   # For O_RDWR, O_CREAT, etc.
        use SDBM_File;

        tie(%h, 'SDBM_File', 'filename', O_RDWR|O_CREAT, 0666)
          or die "Couldn't tie SDBM file 'filename': $!; aborting";

        # Now read and change the hash
        $h{newkey} = newvalue;
        print $h{oldkey};

        untie %h;

       "SDBM_File" establishes a connection between a Perl hash
       variable and a file in SDBM_File format;.  You can manipu-
       late the data in the file just as if it were in a Perl
       hash, but when your program exits, the data will remain in
       the file, to be used the next time your program runs.

       Use "SDBM_File" with the Perl built-in "tie" function to
       establish the connection between the variable and the
       file.  The arguments to "tie" should be:

       1.  The hash variable you want to tie.

       2.  The string "SDBM_File".  (Ths tells Perl to use the
           "SDBM_File" package to perform the functions of the

       3.  The name of the file you want to tie to the hash.

       4.  Flags.  Use one of:

             Read-only access to the data in the file.

             Write-only access to the data in the file.

             Both read and write access.

           If you want to create the file if it does not exist,
           add "O_CREAT" to any of these, as in the example.  If
           you omit "O_CREAT" and the file does not already
           exist, the "tie" call will fail.

       5.  The default permissions to use if a new file is cre-
           ated.  The actual permissions will be modified by the

perl v5.8.5                 2002-11-06                          1

SDBM_File(3p)    Perl Programmers Reference Guide   SDBM_File(3p)

           user's umask, so you should probably use 0666 here.
           (See "umask" in perlfunc.)

       On failure, the "tie" call returns an undefined value and
       probably sets $! to contain the reason the file could not
       be tied.

       "sdbm store returned -1, errno 22, key "..." at ..."

       This warning is emmitted when you try to store a key or a
       value that is too long.  It means that the change was not
       recorded in the database.  See BUGS AND WARNINGS below.

       There are a number of limits on the size of the data that
       you can store in the SDBM file.  The most important is
       that the length of a key, plus the length of its associ-
       ated value, may not exceed 1008 bytes.

       See "tie" in perlfunc, perldbmfilter, Fcntl

perl v5.8.5                 2002-11-06                          2