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