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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить значение элемента хеш массива в случае ес, получить значение элемента хеш массива в 
:(
    Опции темы
comhunt
Дата 28.6.2013, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Надо получить значение элемента хеш массива в случае если его имя было передано в виде переменной (например в функцию)

Первый пример для скаляра - все работает нормально
$a=123;
$varname='a';
print $$varname;
Результат: 123

Второй пример хеша %h
$h{aaa}=456;
$varname='h{aaa}';
print $$varname;
В этом случае не работает.

Возможно я что-то не понимаю в принципе, или синтаксис не тот использую.
Буду благодарен за все высказанные вами по этому поводу мысли
PM MAIL   Вверх
ginnie
Дата 28.6.2013, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

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



comhunt, при попытке разыменовывания переменной, содержащей вместо ссылки строку, эта строка используется как имя глобальной переменной (подробнее смотрите Symbolic references). Поэтому первый вариант срабатывает, а второй - нет. Я не знаю, зачем Вам нужен такой код, я бы такое писать не стал. Но если действительно надо, то можно сделать так:
Код

$h{aaa}=456;
$varname='$h{aaa}';
print eval $varname;


Это сообщение отредактировал(а) ginnie - 28.6.2013, 12:08


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
DProf
Дата 28.6.2013, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Использование разыменовываний переменных, содержащих вместо ссылки строку - верный способ убить себя об стену )
Если надо передать в функцию хэш - то так делайте &my_function(\%hash)

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


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

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


 




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


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

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