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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Значение переменной 
V
    Опции темы
meridian
Дата 26.11.2009, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет всем!
Вопрос: могу ли я подставить в имя переменной $cntXXX вместо XXX значения массива, чтобы получилось имя переменной ?

Код

...
#вычисление переменных $cnt0_5, $cnt6_10 и т.д.
....
my @ArrPeriod = qw( 0_5 6_10 11_15 16_20 21_25 26_30 g30 g180 g365);
foreach my $i (@ArrPeriod)
{
    $ent->SetFieldValue($INZ1AGE_T_SUBM_F, $cntXXX);
}

...



Спасибо.

Это сообщение отредактировал(а) meridian - 26.11.2009, 20:14
PM   Вверх
ginnie
Дата 26.11.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



meridian, мне кажется, что лучше вместо этих переменных использовать хэш.


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


Шустрый
*


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

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



Цитата(ginnie @ 26.11.2009,  19:14)
meridian, мне кажется, что лучше вместо этих переменных использовать хэш.

Слушай, ты в корне прав! Спасиб!
PM   Вверх
meridian
Дата 26.11.2009, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(meridian @ 26.11.2009,  19:15)
Цитата(ginnie @ 26.11.2009,  19:14)
meridian, мне кажется, что лучше вместо этих переменных использовать хэш.

Слушай, ты в корне прав! Спасиб!

Я правильно понял ?
Только вопрос... переменные $cntSubm0_5 в кавычках или нет ?

Код

my %ArrPeriod =
(    '0_5'   = > '$cnt0_5',
    '6_10'  = > '$cnt6_10',
    '11_15' = > '$cnt11_15',
    '16_20' = > '$cnt16_20',
    '21_25' = > '$cnt21_25',
    '26_30' = > '$cnt26_30',
    'g30'   = > '$cntg30',
    'g180'  = > '$cntg180',
    'g365'  = > '$cntg365'
);
...
foreach my $key (keys %ArrPeriod)
{
    $ent->SetFieldValue($INZ1AGE_T_SUBM_F, $ArrPeriod($key));
}
...

PM   Вверх
Egik2
Дата 26.11.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну а вообще, принципиально, при помощи какого-нибудь evala можно такое сделать?

Добавлено через 3 минуты и 16 секунд
Если ты возмешь их в одинарные кавычки, получится, значения хэша - просто строки вида '$cnt0_5', и никаких переменных
Чтобы были переменные, надо без кавычек.
Только эти $cnt0_5 где-нить до этого надо инициализировать.

Добавлено через 11 минут и 8 секунд
А первую задумку можно реализовать так:

my @ArrPeriod = qw( 0_5 6_10 11_15 16_20 21_25 26_30 g30 g180 g365);
foreach my $i (@ArrPeriod)
{
    $ent->SetFieldValue($INZ1AGE_T_SUBM_F, eval('$cnt'.$i));
}


--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
meridian
Дата 26.11.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



OK, спасибо!
PM   Вверх
ginnie
Дата 27.11.2009, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



meridian, скажите, зачем Вам отдельные переменные, почему нельзя в хэш подставить сразу значения?

Код

my %ArrPeriod =
(   '0_5'   => 100,
    '6_10'  => 200,
    '11_15' => 300,
...
);





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


Шустрый
*


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

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



Цитата(ginnie @ 27.11.2009,  11:28)
meridian, скажите, зачем Вам отдельные переменные, почему нельзя в хэш подставить сразу значения?

Код

my %ArrPeriod =
(   '0_5'   => 100,
    '6_10'  => 200,
    '11_15' => 300,
...
);

Переменные вычисляемые, не константы.
PM   Вверх
ginnie
Дата 27.11.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



meridian, я вопрос про переменные к тому написал, что если они в программе используются редко, то разумнее их совсем заменить на хэш, т.е. в программе вместо $cnt0_5 использовать $ArrPeriod{0_5}.


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


Шустрый
*


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

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



Да нет, вроде используются часто.

Кстати, с eval('$cht'.$i) не получилось
получаю значения

.
Код

..
$hh=eval('$cht'.$i);
print ("hh=$hh, i=$i";
...


выхлоп 

hh=0, i=0,5

а хотел $cht0_5



Это сообщение отредактировал(а) meridian - 27.11.2009, 14:57
PM   Вверх
ginnie
Дата 27.11.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(meridian @  27.11.2009,  14:55 Найти цитируемый пост)
выхлоп hh=0, i=0,5а хотел $cht0_5

а если значение $i исправить на '0_5'?



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


Опытный
**


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

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



Цитата(meridian @  27.11.2009,  14:55 Найти цитируемый пост)

Код
..
$hh=eval('$cht'.$i);
print ("hh=$hh, i=$i";
...



А чем выражается, то что не работает?
Может проблема в том, что в eval у вас '$cht' вместо '$cnt'?

У меня ваш блок кода отлично отработал
Код

my $cnt0_5 = '123';
my $i = '0_5'; 
my $hh = eval('$cnt'.$i);
print ("hh=$hh, i=$i");


Вывело:
hh=123, i=0_5


Это сообщение отредактировал(а) Egik2 - 27.11.2009, 18:46


--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
meridian
Дата 27.11.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Egik2 @ 27.11.2009,  17:42)
Цитата(meridian @  27.11.2009,  14:55 Найти цитируемый пост)
..
$hh=eval('$cht'.$i);
print ("hh=$hh, i=$i";
...


А чем выражается, то что не работает?
Может проблема в том, что в eval у вас '$cht' вместо '$cnt'?

Опечатка, конечно же '$cnt'
PM   Вверх
Egik2
Дата 27.11.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И по прежнему не работает?


--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
meridian
Дата 27.11.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ginnie @ 27.11.2009,  15:07)
Цитата(meridian @  27.11.2009,  14:55 Найти цитируемый пост)
выхлоп hh=0, i=0,5а хотел $cht0_5

а если значение $i исправить на '0_5'?

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


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

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


 




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


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

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