Learning Perl on Win32 Systems

Learning Perl on Win32 SystemsSearch this book
Previous: 17.2 Opening and Closing DBM HashesChapter 17
Database Manipulation
Next: 17.4 Fixed-Length Random-Access Databases
 

17.3 Using a DBM Hash

After the database is opened, accesses to the DBM hash are mapped into references to the database. Changing or adding a value in the hash causes the corresponding entries to be immediately written into the disk files. For example, once %FRED is opened from the earlier example, we can add, delete, or access elements of the database, like this:

$FRED{"fred"} = "bedrock";  # create (or update) an element
delete $FRED{"barney"};     # remove an element of the database
foreach $key (keys %FRED) { # step through all values
        print "$key has value of $FRED{$key}\n";
}

That last loop has to scan through the entire disk file twice: once to access the keys, and a second time to look up the values from the keys. If you are scanning through a DBM hash, it's generally more disk-efficient to use the each operator, which makes only one pass:

while (($key, $value) = each(%FRED)) {
        print "$key has value of $value\n";
}


Previous: 17.2 Opening and Closing DBM HashesLearning Perl on Win32 SystemsNext: 17.4 Fixed-Length Random-Access Databases
17.2 Opening and Closing DBM HashesBook Index17.4 Fixed-Length Random-Access Databases