Hadoop совершенно не имеет отношения к этому случаю. Hadoop - это система для распараллеливания больших вычислительных задач на компьютерных кластерах, а не для распараллеливания краткосрочных поисков на одном узле.
Если я правильно понимаю, вы хотите, чтобы Perl просматривал значение в нескольких файлах BDB параллельно. Лучше всего это сделать, передав вашим вызовам bdb дескриптор обратного вызова, который будет выполнен после завершения запроса. Потоки будут выполняться на уровне C, гораздо эффективнее, чем в Perl вручную.
Строительные блоки:
BDB: http://metacpan.org/pod/BDB
Coro :: BDB: http://metacpan.org/pod/Coro::BDB
AnyEvent: http://metacpan.org/pod/AnyEvent