Question

I simply need to find out how many elements I have in this hash, and I'm looking at the docs but the only thing that might give me this is db_stat, and there's a TODO under it.

http://search.cpan.org/dist/BerkeleyDB/BerkeleyDB.pod#Using_db_stat

So other than creating a cursor and parsing through the entire thing, how can I see how many keys are in the hash?

Was it helpful?

Solution

Seem to have found the answer here:

http://download.oracle.com/docs/cd/E17076_02/html/api_reference/C/dbstat.html

Names many different variables set when db_stat is called, including the one I was looking for, 'hash_ndata', which gives the number of key-value pairs.

OTHER TIPS

You can tie a bdb database to a hash, then check the number of keys in the hash. The keys function will give you the number of keys in a hash when used in a scalar context.

use DB_File;
our %dbHash;

yadda, yadda, yadda;
tie (%dbHash, "DB_File", $dbFileName);
print "The number of keys in $dbFileName is " . keys(%dbHash) . "\n";

Unfortunately, I can't test this because I don't have dbd on my system. I believe you have to use package variables for handling the tie.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top