![]() |
|
Модераторы: ginnie, korob2001 |
![]()
|
|
| everyone |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 24.3.2004 Репутация: 1 Всего: 4 |
Как в подпрограмме share найти value(b) хэша, передаваемого этой подпрограмме, зная ключ к этому значению(a)? Как я понял, подпрограмме передаётся список - "@_", то есть ключ и значение хэша становятся ячейками списка, никак между собой не связанными. И на всякий случай, скажу для какой цели это нужно: Подпрограмме передаётся хэш с параметрами, скажем, отображения HTML страницы, где любой ключ - название параметра, а соответствующее значение - значение параметра. Я пробовал передавать значения параметров списком, или скалярами, но они должны идти в определённом порядке,... утомительно. Что-то похожее я видел в CGI.pm:
функции header тоже передаётся соответсвие ключ=>ячейка, но не хочется лезть в исходники Есть у кого-нибудь решение моей проблемы? --------------------
Что написал, то написал (Пилат) |
||||
|
|||||
| Chuck |
|
||||
![]() Сушня ![]() ![]() Профиль Группа: Эксперт Сообщений: 442 Регистрация: 12.12.2003 Где: Узбекистан, Ташке нт Репутация: нет Всего: 9 |
Это можно сделать так:
1. Неявной передачей ссылки (использование прототипов):
2. Передачей хэша как массива с четным числом элементов:
|
||||
|
|||||
| s_a_s_h_a |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 20.7.2004 Где: Петрозаводск Репутация: нет Всего: 1 |
Другая запись использования ссылки:
|
|||
|
||||
| dimes |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 249 Регистрация: 20.7.2004 Где: то около СПБ Репутация: нет Всего: 14 |
Э.... а почему не подходит такой способ?
|
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: нет Всего: 83 |
everyone
Я обычно передачу делаю вот так:
|
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 6 Всего: 61 |
Если передаётся один хеш, то можно получить его и без ссылок простым присваиванием:
Например:
Насчёт списка ты прав, хеш действительно сохраняется в массив в виде линейного списка, но он не смешивает ключи и значения. Другими словами, список будет примерно таким: ("key2", "val2", "key3", "val3", "key1", "val1") Здесь стоит обратить внимание на то, что в списке каждое значение стоит справа от своего ключа. Но сами пары расположены не по порядку, но в тоже время это не имеет никакого значения. Вобщем мы получаем точную копию хеша, причём если хеш объявлен как локальный, как в примере выше, то его можно назвать таким же именем как и передавемый подпрограмме. Проблема возникает только в том случае, если ты передаёшь в подрограмму не один хеш. Удачи. Добавлено @ 22:21 dimes - опс.... Извини, просто сначала не заметил того, что ты это уже написал . ;))))))))) Это сообщение отредактировал(а) korob2001 - 27.1.2005, 22:23 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
![]()
|
| Правила форума "Perl: Системное программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |