Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос про хеши (DBM если верно) 
:(
    Опции темы
DooZ
Дата 30.11.2005, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



вопрос такой:
работать с хешем вида:
$hash{'name'}{'icq'}=123;
$hash{'name'}{'tel'}=22488;
$hash{'name'}{'sex'}="m";
просто достаточно

но как мне это записать в DBM файл и потом прочесть оттуда?
в PHP для этого есть функция консервирования и расконсервирования (так помоему), как дела обстоят в Perl ?
PM MAIL   Вверх
Kiber_rat
Дата 30.11.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



Воспользуйся модулем MLDBM со CPAN:
Код
use MLDBM;                        # this gets SDBM and Data::Dumper
    #use MLDBM qw(SDBM_File Storable);  # SDBM and Storable
    use Fcntl;                          # to get 'em constants
     
    $dbm = tie %o, 'MLDBM', 'testmldbm', O_CREAT|O_RDWR, 0640 or die $!;
    
    $c = [\ 'c'];
    $b = {};
    $a = [1, $b, $c];
    $b->{a} = $a;
    $b->{b} = $a->[1];
    $b->{c} = $a->[2];
    @o{qw(a b c)} = ($a, $b, $c);
    
    #
    # to see what was stored
    #
    use Data::Dumper;
    print Data::Dumper->Dump([@o{qw(a b c)}], [qw(a b c)]);
    
    #
    # to modify data in a substructure
    #
    $tmp = $o{a};
    $tmp->[0] = 'foo';
    $o{a} = $tmp;
    
    #
    # can access the underlying DBM methods transparently
    #
    #print $dbm->fd, "\n";              # DB_File method

Еще один вариант использовать модуль Storable


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
DooZ
Дата 30.11.2005, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



ок сенькс
PM MAIL   Вверх
sharq
Дата 30.11.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



DooZ данный вопрос не раз обсуждался здесь, поэтому пользуемся поиском.
Обращаем внимание на ответы korob2001. smile

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
DooZ
Дата 1.12.2005, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



Цитата(sharq @ 30.11.2005, 17:56)
DooZ данный вопрос не раз обсуждался здесь, поэтому пользуемся поиском.
Обращаем внимание на ответы korob2001. smile

smile

искал, читал
там нет ответа на мой вопрос =) (кроме того что ответили в данной теме)
PM MAIL   Вверх
sharq
Дата 1.12.2005, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



DooZ если тебе нужно сохранить какую-нибудь структуру данных, а потом восстановить ее, то используй модуль Storable. Это лучший на данный момент вариант.

Код

use Storable 'store', 'retrieve';

my $hash = {
 'key1' => [1,2,3,4,5],
 'key2' => {
   1 => 'hello',
   2 => 'perl',
   ...
 },
 'key3' => 'simple text',
  ...
};

store $hash, 'hash.dump';

...

my $new_hash = retrieve $hash; 


smile

Это сообщение отредактировал(а) sharq - 1.12.2005, 10:46


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Kiber_rat
Дата 1.12.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



sharq У тебя в 18-й строке обознатушки:
Код
my $new_hash = retrieve('hash.dump');
;)


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
sharq
Дата 1.12.2005, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Kiber_rat бывает smile

Код

use Data::Dumper;
use Storable 'retrieve';

my $new_hash = retrieve 'hash.dump'; 
print Dumper $new_hash; # просмотр


smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
DooZ
Дата 1.12.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



спасибо огромное
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.