October 2001
Beginner
528 pages
15h 20m
English
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 ...