Antonio Gulli wrote: > Dear All, > i hope that someone can help me. > 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,
You might try : "$dbDIR/$file" instead of $file to pick up the full path to the 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? You could also try dumping listOfHashes using Data::Dumper and see what you get. -- ,-/- __ _ _ $Bill Luebkert Mailto:[EMAIL PROTECTED] (_/ / ) // // DBE Collectibles Mailto:[EMAIL PROTECTED] / ) /--< o // // Castle of Medieval Myth & Magic http://www.todbe.com/ -/-' /___/_<_</_</_ http://dbecoll.tripod.com/ (My Perl/Lakers stuff) _______________________________________________ Perl-Unix-Users mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs