![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
comhunt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
Надо получить значение элемента хеш массива в случае если его имя было передано в виде переменной (например в функцию)
Первый пример для скаляра - все работает нормально $a=123; $varname='a'; print $$varname; Результат: 123 Второй пример хеша %h $h{aaa}=456; $varname='h{aaa}'; print $$varname; В этом случае не работает. Возможно я что-то не понимаю в принципе, или синтаксис не тот использую. Буду благодарен за все высказанные вами по этому поводу мысли |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
comhunt, при попытке разыменовывания переменной, содержащей вместо ссылки строку, эта строка используется как имя глобальной переменной (подробнее смотрите Symbolic references). Поэтому первый вариант срабатывает, а второй - нет. Я не знаю, зачем Вам нужен такой код, я бы такое писать не стал. Но если действительно надо, то можно сделать так:
Это сообщение отредактировал(а) ginnie - 28.6.2013, 12:08 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
DProf |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 28.9.2012 Репутация: 1 Всего: 1 |
Использование разыменовываний переменных, содержащих вместо ссылки строку - верный способ убить себя об стену )
Если надо передать в функцию хэш - то так делайте &my_function(\%hash) Это сообщение отредактировал(а) DProf - 28.6.2013, 13:47 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |