Если открывать только на чтение:
- Код: Выделить всё
my $db = tie %hash, 'BerkeleyDB::Btree',
-Filename => "/www/sasplanet/sat0/z3/0/0/0.0.sdb",
-Env => $env,
-Flags => DB_RDONLY or DB_THREAD
or die "Could not read file '0.0.sdb': $!\n" ;
foreach $key (keys %hash) {
print "$key => $hash{$key}\n";
}
Вывод получаю вот такой:
$ perl ./readBDB.pl
=>
untie attempted while 1 inner references still exist at ./readBDB.pl line 60.
То-есть есть одна пустая пара ключ - значение. (или я не правильно смотрю ключи?)
Если на запись открываю (DB_CREATE or DB_AUTO_COMMIT or DB_THREAD), вывод вообще пустой.
И в FileName у нас передаётся относительный путь: z3/0/0/0.0.sdb
Относительный путь передать не получается.
Дело в том, что у меня Home:
- Код: Выделить всё
-Home => "/www/sasplanet/sat0/env"
(Если положить home в /www/sasplanet/sat0 то файлы __db.001 создаются там же, в корне)
А отностельные пути с точками (../z3/0/0/0.0.sdb) тоже не проходят. Путь ссылается в никуда.
Поэтому использую абсолютные пути.