| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Значение переменной |
| Автор: meridian 26.11.2009, 20:12 | ||
| Привет всем! Вопрос: могу ли я подставить в имя переменной $cntXXX вместо XXX значения массива, чтобы получилось имя переменной ?
Спасибо. |
| Автор: ginnie 26.11.2009, 20:14 |
| meridian, мне кажется, что лучше вместо этих переменных использовать хэш. |
| Автор: meridian 26.11.2009, 20:15 | ||
Слушай, ты в корне прав! Спасиб! |
| Автор: meridian 26.11.2009, 20:50 | ||||||
Я правильно понял ? Только вопрос... переменные $cntSubm0_5 в кавычках или нет ?
|
| Автор: Egik2 26.11.2009, 20:53 |
| Ну а вообще, принципиально, при помощи какого-нибудь 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)); } |
| Автор: meridian 26.11.2009, 21:53 |
| OK, спасибо! |
| Автор: ginnie 27.11.2009, 12:28 | ||
meridian, скажите, зачем Вам отдельные переменные, почему нельзя в хэш подставить сразу значения?
|
| Автор: meridian 27.11.2009, 14:38 | ||||
Переменные вычисляемые, не константы. |
| Автор: ginnie 27.11.2009, 14:45 |
| meridian, я вопрос про переменные к тому написал, что если они в программе используются редко, то разумнее их совсем заменить на хэш, т.е. в программе вместо $cnt0_5 использовать $ArrPeriod{0_5}. |
| Автор: meridian 27.11.2009, 14:55 | ||
| Да нет, вроде используются часто. Кстати, с eval('$cht'.$i) не получилось получаю значения .
выхлоп hh=0, i=0,5 а хотел $cht0_5 |
| Автор: ginnie 27.11.2009, 16:07 |
а если значение $i исправить на '0_5'? |
| Автор: Egik2 27.11.2009, 18:42 | ||
А чем выражается, то что не работает? Может проблема в том, что в eval у вас '$cht' вместо '$cnt'? У меня ваш блок кода отлично отработал
Вывело: hh=123, i=0_5 |
| Автор: meridian 27.11.2009, 18:44 | ||
Опечатка, конечно же '$cnt' |
| Автор: Egik2 27.11.2009, 18:48 |
| И по прежнему не работает? |
| Автор: meridian 27.11.2009, 18:48 | ||
Все работает. Короче, сам дурак. Спасибо всем! |