Forum Webscript.Ru

Программирование => Perl => Тема начата: Timur S. от 13 Октября 2004, 17:04:21

Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: Timur S. от 13 Октября 2004, 17:04:21
Можно ли записать в DB_File хеш такого типа структуру или может куда еще...


%db{$key}
               ->[0]
               ->[1]
                      ->[0]
                      ->[1]
                      ->[2]
               ->[2]
                      ->[0]
                      ->[1]
               ->[3]
Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: NeoNox от 13 Октября 2004, 18:00:24
в DB_File нет.
perldoc MLDBM
Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: Timur S. от 13 Октября 2004, 18:19:58
Буду смотреть.
Спасибо.
Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: Timur S. от 14 Октября 2004, 12:52:06
Подскажите пробаю занести данные в базу они не заносятся, приважу два варианта занесения может кто поскажет в чем причина.


use DB_File;
use MLDBM qw(DB_File);
use Fcntl qw(:DEFAULT :flock);

my $db_hash = "base.db";
tie %db, \'MLDBM\', $db_hash, O_CREAT|O_RDWR, 0666 or die $!;

#вариант1 занесения
$sample   = {\'burnt\' => \'umber\', \'brownian\' => \'motion\'} ;
$db{"test1"} = $sample;

#вариант2 занесения
$db{"test2"}= ["smth2",\'cxsd@ware\'];

untie %db;

Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: NeoNox от 14 Октября 2004, 13:01:32
Берем пример:

use MLDBM;
use Data::Dumper;
use Fcntl;

tie %db, \'MLDBM\', \'testmldbm\', O_CREAT|O_RDWR, 0640 or die $!;
$db{\'test\'}   = {\'burnt\' => \'umber\', \'brownian\' => \'motion\'};

untie %db;


tie %db, \'MLDBM\', \'testmldbm\', O_CREAT|O_RDWR, 0640 or die $!;
print Dumper($db{\'test\'});
untie %db;

Что получаешь?
Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: Timur S. от 14 Октября 2004, 17:00:04
выдает

$VAR1 = undef;
Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: NeoNox от 14 Октября 2004, 17:05:39
Timur S. а не должен.
Что за perl? Какая версия?
Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: Timur S. от 14 Октября 2004, 17:11:08
ActivePerl 5.8.0.805
Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: NeoNox от 14 Октября 2004, 17:15:51
файлы баз данных он тоже не создает?
Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: Timur S. от 14 Октября 2004, 18:40:44
Спасибо ошибка исправлена. (неверная переменная стояла).

А вообще она как по дыстродействию, блокировки и тд.,
Вроде есть использования MLDBM с DB_File, как оно по работе с блокировкой, DB_File::Lock вроде не подставляется:

use MLDBM qw(DB_File); #DB_File::Lock
Название: Можно ли записать в DB_File хеш такого типа...
Отправлено: NeoNox от 14 Октября 2004, 19:25:06
Под виндой? :)
http://www.hk8.org/old_web/linux/cgi/ch10_02.htm