469,625 Members | 1,088 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,625 developers. It's quick & easy.

Tie a large list of DB_Files

I have a large list of DB_Files stored in a directory. I would like to
tie all of them to an array of hashes and to search them for key,
using the hashes.

My idea is rather simple:

my (@listOfHashes);
my ($numOfHashes);

sub loadDBs{

my ($dbDIR) = @_;
my ($numFiles) = 0;
my ($b) = new DB_File::BTREEINFO;
my ($file);

$numOfHashes = 0;

opendir(DIR, $dbDIR) || die "cannot opendir $dbDIR: $!";
while (defined($file = readdir(DIR))){

if ($file =~ /db\.*/){
tie %{ $listOfHashes[$numOfHashes] }, "DB_File", $file,
O_RDONLY, 0666, $b
|| die ("Cannot open $file");
$numOfHashes++;
print "Tied $file $numOfHashes\n";
}
}
}

sub dumpAll_Key_Value{

my ($key, $value);
for (my $i = 0; $i < $numOfHashes; $i++){
print "Load $i";
while (($key, $value) = keys %{ $listOfHashes[$i] }){
print ">$key< >$value<\n";
}
}
}

sub searchKey{

my ($key) = @_;
my ($fetched);
for (my $i = 0; $i < $numOfHashes; $i++){
if (defined ($fetched = $listOfHashes[$i]{$key})){
print "found $key on $i DB";
return $fetched;
}
}
return undef;
}

But neither searchKey() nor dumAll_Key_Value() seems to work,
while loadDBs() seems to tie the hashes...

Am i doing a trivial error or what? Any suggestion?

Thank you so much.
Jul 19 '05 #1
0 1203

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

9 posts views Thread by Lol McBride | last post: by
55 posts views Thread by Jonas Smithson | last post: by
5 posts views Thread by Louis LeBlanc | last post: by
10 posts views Thread by Peter Duniho | last post: by
19 posts views Thread by Chaz Ginger | last post: by
14 posts views Thread by Bryan Parkoff | last post: by
reply views Thread by gheharukoh7 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.