A DBM Example Script

Let’s take a look at a more complete example. Example 20-1 demonstrates how we might use GDBM_File in an actual script. Like all the examples in this book, it can be downloaded from the book’s web site, at http://www.elanus.net/book/.

Example 20-1. A simple GDBM_File example

#!/usr/bin/perl -w

# color.plx - demonstrate GDBM_File

use strict;

use GDBM_File;
my $datafile = 'color.gdbm';

tie my %COLOR, 'GDBM_File', $datafile, &GDBM_WRCREAT, 0644
    or die "can't tie to $datafile for WRCREAT access: $!";

$COLOR{banana} = 'yellow';
$COLOR{apple}  = 'red';
$COLOR{orange} = 'orange';

untie %COLOR; # no longer tied to the DBM file

%COLOR = (  );  # empty the hash, to prove we're really storing
              # the data on disk.

tie %COLOR, 'GDBM_File', $datafile, &GDBM_READER, 0644
    or die "can't tie to $datafile for READER access: $!";
    
print "Here are all the records currently stored in $datafile:\n\n";

while (my($key, $value) = each %COLOR) {
    print "key: '$key', value: '$value'\n";
}

untie %COLOR;

If we run this script, it should produce output that looks like the following:

[jbc@andros jbc]$ color.plx
Here are all the records currently stored in color.gdbm:

key: 'orange', value: 'orange'
key: 'banana', value: 'yellow'
key: 'apple', value: 'red'

Suppose that we now add the following statement immediately after the first tie statement in color.plx, before the %COLOR hash has been untied:

tie my %ANOTHER, 'GDBM_File', $datafile, &GDBM_WRCREAT, 0644 or die "can't tie to $datafile for WRCREAT ...

Get Perl for Web Site Management now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.