Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > Perl

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 28.11.2001, 16:37
Winwolf вне форума Посмотреть профиль Отправить личное сообщение для Winwolf Найти все сообщения от Winwolf
  № 1  
Winwolf

Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
Attention Хочу хитрый хеш!!!

Hi, ALL!!
В общем хочу такую штуку:
Есть у меня набор строчек такого вида
Код:
 val1 val2 val3
Где val1 - слова(фамилии, к примеру),
val2 - только цифры,
val3 - смесь букв и цифр.
Хочется сделать что-то типа хеша.
То есть, ключом будет val1, а по нему получить val2 и val3. При этом иметь возможность не просто узнать значения этих переменных, а и изменять val2 как обычное число (складывать, умножать, etc)
Можно это конечно и простым хешем сделать (собрать val2 и val3 в кучу, поставить между ними разделитель, а потом выдирать val2) но уж больно гимморно.
Может есть какой-нибудь способ попроще?
SPV, приходи, помогай

Спасибо.

Старый 28.11.2001, 17:43
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 2  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ

Так делай многомерный хэш:
${$myhash{Pupkin}}{bla} = 1000;
${$myhash{Pupkin}}{any} = '10 apr 1976';
${$myhash{Dudkin}}{bla} = 500;
${$myhash{Dudkin}}{any} = '13 mar 1976';
print $myhash{Pupkin}{bla};
print $myhash{Dudkin}{any};
print $myhash{Pupkin}{bla}+$myhash{Dudkin}{bla};
__________________
Two beer or not two beer?...

Старый 28.11.2001, 17:53
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 3  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
Щас посмотрел - тут даже кучу лишних преобразований сделал Можно и без них, просто:
$myhash{Pupkin}{bla} = 1000;
$myhash{Pupkin}{any} = '10 apr 1976';
$myhash{Dudkin}{bla} = 500;
$myhash{Dudkin}{any} = '13 mar 1976';
print $myhash{Pupkin}{bla}."\n";
print $myhash{Dudkin}{any}."\n";
print $myhash{Pupkin}{bla}+$myhash{Dudkin}{bla}."\n";
__________________
Two beer or not two beer?...

Старый 28.11.2001, 18:19
Winwolf вне форума Посмотреть профиль Отправить личное сообщение для Winwolf Найти все сообщения от Winwolf
  № 4  
Winwolf

Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
Неее, немного не так
Мне бы по одному ключу получить сразу два значения
Типа такого: говорю хешу "Пупкин", а он мне в ответ "Вася". "5" рублей должен. А я ему в ответ - уже не "5", а "10". И он уже не "Вася" а "Федя".
Такого плана штучку бы

Старый 29.11.2001, 15:51
Winwolf вне форума Посмотреть профиль Отправить личное сообщение для Winwolf Найти все сообщения от Winwolf
  № 5  
Winwolf

Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
И еще вопросик про хеши.
А в каком порядке в хеши данные храняться? В порядке попадания или еще как?
Ну например, забил я хеш значениями, а потом использую цикл :
Код:
foreach $val (keys (%hash))
 {
print $hash{$val},"\n";
}
Как скрипт мне результат выдаст? В порядке попадания или по другому?

Старый 29.11.2001, 17:06
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 6  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
2 Winwolf

Post 1 : U hasha yesty tolko 2 "polia" v kotoriye mozno chego-nibud zapihnut : kluch (key) i znacheniye (value)...

Prichem oni k drug drugu otnosiatsia sledushim obrazom - kluch (estestvenno priobroshonniy hitroy funkciyey "hash" v integer) - posiciya v pamiaty. A value eto to chto v etoy posicii nahoditsia.

Sovet : pochitay, a potom sprashivay. Etot vopros otvechen zhirnimi bukvami vo vseh PDF-ah po Perlu... Pochemu - mol u hasha tolko dva polia?

Post 2 : Znacheniya hraniatsia v poriadke kotoriy zadayet funcciya hash... To yest - yesli hash("Vasia") == 1 a hash("Vovochka") == 2, Vasia perviy.

No skazhu tebia otkrovenno - ochen malo ludey znayet kak ustroyen algoritm hashirovaniye v Perle. Potomo chto eto ni komu ne nado.

Poriadok v kotorom budut vivoditsia danniye yesli zapustish script kotoriy ti napisal - alfanumericheskiy - t.e. 0123456789abcdef ... Tak kak funciya keys() vozvrashayet array s kluchami uporiadochennimi vishe ukazannom poriadke.


Последний раз редактировалось kompadre; 29.11.2001 в 17:08.
Старый 29.11.2001, 17:32
Winwolf вне форума Посмотреть профиль Отправить личное сообщение для Winwolf Найти все сообщения от Winwolf
  № 7  
Winwolf

Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
2 kompadre
Цитата:
U hasha yesty tolko 2 "polia" v kotoriye mozno chego-nibud zapihnut : kluch (key) i znacheniye (value)...

Prichem oni k drug drugu otnosiatsia sledushim obrazom - kluch (estestvenno priobroshonniy hitroy funkciyey "hash" v integer) - posiciya v pamiaty. A value eto to chto v etoy posicii nahoditsia.
Это я все прекрасно знаю.
Где я спрашивал, почему у хеша только два поля?
Вопрос был немного другой - как бы используя одно значение в качестве ключа получить два других? При чем не обязательно с помощью хешей. Это слово я использовал как понятие, наиболее близко подходящее по смыслу


Последний раз редактировалось Winwolf; 29.11.2001 в 17:35.
Старый 30.11.2001, 02:07
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 8  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Попробуй в значение запихнуть массив из двух элементов.

Старый 30.11.2001, 12:47
Winwolf вне форума Посмотреть профиль Отправить личное сообщение для Winwolf Найти все сообщения от Winwolf
  № 9  
Winwolf

Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
А примерчик можно?
А то я это себе как то слабо представляю.
Ну с одной тройкой значений еще туда-сюда. А если их много? И заранее не знаю сколько? То тогда как?

Старый 01.12.2001, 23:47
Хрюндик вне форума Посмотреть профиль Отправить личное сообщение для Хрюндик Посетить домашнюю страницу Хрюндик Найти все сообщения от Хрюндик
  № 10  
Хрюндик
 
Аватар для Хрюндик

Регистрация: Sep 2000
Сообщений: 326
Отправить сообщение для Хрюндик с помощью ICQ
А че ты сплитом обычным пользоваться не хочешь? очень удобно
split
join
все что тебе надо... Нифмга искать альтернативный путь?
Пример:
@some= ("Вася", "12", "хочет жрать");
$hash{"Vasya"} = join("::", @some);
print ( split("::", $hash{"Vasya"}) );
__________________
Флэш - это искусство(читай издевательство)

Создать новую тему   Часовой пояс GMT +4, время: 05:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.