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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Значение для ключа хеша = ссылке, на ключ другого х 
:(
    Опции темы
Suppir
Дата 1.4.2011, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день!

Допустим, у меня есть набор из 3-х органов власти:

Законодательное собрание Краснодарского края
Администрация муниципального образования город Краснодар
Губернатор Краснодарского края

И есть 1 млн. документов с уникальными ID. Мне нужно составить хеш

$doc{ID}{source} = <название органа>

$doc{1}{source} = 'Законодательное собрание Краснодарского края'
$doc{2}{source} = 'Администрация муниципального образования город Краснодар'
$doc{3}{source} = 'Губернатор Краснодарского края'
...
$doc{1000000}{source} = 'Губернатор Краснодарского края'

Получается, что в хеше миллион раз повторяются строки с названием органов власти. 
Можно ли сделать следующую вещь: вместо строки 'Законодательное собрание Краснодарского края' использовать ссылку на КЛЮЧ хеша, в котором будут перечислены эти органы?




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


Опытный
**


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

Репутация: 22
Всего: 39



Нельзя получить ссылку на ключ хеша, насколько я знаю


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


Опытный
**


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

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



Хорошо, а если я составлю дополнительный хеш вида:

$s{'Законодательное собрание Краснодарского края'}='Законодательное собрание Краснодарского края';
$s{'Администрация муниципального образования город Краснодар'}='Администрация муниципального образования город Краснодар';
$s{'Губернатор Краснодарского края'}='Губернатор Краснодарского края';


Как потом сделать ссылку на значение вспомогательного хеша $s?

Добавлено через 1 минуту и 21 секунду
Т.е. я хочу составить библиотеку этих органов (их немного, но названия длинные), а потом для каждого документа указывать не само название органа, а ссылку на его место в библиотеке. Как это сделать?
PM MAIL   Вверх
Pfailed
Дата 1.4.2011, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 22
Всего: 39



$ref = \$s{'Законодательное собрание Краснодарского края'};
В $ref будет ссылка.


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


Опытный
**


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

Репутация: 20
Всего: 27



Hash::Util::hv_store()


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
afiskon
Дата 1.4.2011, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

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



Полистайте книжку с Ламой ("Изучаем Perl"), пока ее еще найти можно. Или эту статейку. Матчасть нужно знать!
PM MAIL WWW   Вверх
vivu
Дата 2.4.2011, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ИМХО, не стоит пихать в хеш такие громадные блоки данных. Для этого следует использовать базу данных. 

Если же данных всё-таки не 1 млн., а меньше, ну скажем 1000 то я бы поступил вот так:

Код

#!/usr/bin/perl

use strict;
use Data::Dumper;

my %map = (
    1 => 'Законодательное собрание Краснодарского края',
    2 => 'Администрация муниципального образования город Краснодар',
    3 => 'Губернатор Краснодарского края',
);

my %invers_map = reverse %map;;

my %doc = ();

$doc{1}{source} = $invers_map{'Законодательное собрание Краснодарского края'};
$doc{2}{source} = $invers_map{'Администрация муниципального образования город Краснодар'};
$doc{3}{source} = $invers_map{'Губернатор Краснодарского края'};
$doc{4}{source} = $invers_map{'Губернатор Краснодарского края'};
$doc{5}{source} = $invers_map{'Законодательное собрание Краснодарского края'};

print Dumper(\%doc);

for ( sort keys %doc ) {
    my $source_name = $map{ $doc{$_}{source} };
    print "$_ $source_name\n";
}

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


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

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


 




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


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

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