Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Почему этот код не работает?


Автор: Maks 30.8.2003, 00:47
(Perl)


Этот код работает внутри цикла:

if ( $add_new =~ 'true' )
{
$all_active[$counter_a] = $all_sesion[$counter_s]; #### именно тут ошибкаconfused.gif
print '<br>$counter_a - '.$counter_a.'<br>$counter_s - '.$counter_s; #### эта строка ненужна
$counter_a++;
}

$counter_a - по завершению цикла всегда больше 0.
Массив @all_active после цикла пустой...

Автор: Nobody 30.8.2003, 13:10
Кто бы мне сказал, где тут вообще цикл... smile.gif

Автор: HalkaR 30.8.2003, 13:17
Неплохо бы увидеть весь код. Я так думаю, что здесь скорее всего просто не срабатывает условие.

Автор: NightGoblin 31.8.2003, 06:07
Угу, пожалуй, условие - первое что бросилось в глаза...
Может быть
Код

if ( $add_new =~ /true/ )

или
Код

if ( $add_new eq 'true' )

?

Автор: HalkaR 31.8.2003, 10:27
Сравнивать строки при помощи =, != бесполезное дело, на Перле во всяком случае.

Автор: NightGoblin 4.9.2003, 22:43
2 Halkar:

у него вроде =~

Автор: HalkaR 4.9.2003, 22:50
NightGoblin, я в общем сказал. Имелось в виду, что сравнивать строки в Перле при промощи различных равенств - пустое дело. Хотя данный способ проверки в принципе работает, но он не очень надежен.

Автор: NightGoblin 4.9.2003, 23:09
HalkaR, все зависит от того, что тебе нужно. Иногда не имеет никакого смысла сравнивать по регулярному выражению ($a =~ /foo/), потому что то же самое быстрее и эффективнее можно реализовать буквальным сравнением ($a eq 'foo'). Если например, true читается откуда-то, куда могло быть записано ТОЛЬКО либо 'true' либо 'false', то не имеет никакого смысла тратить время на компиляцию регулярных выражений - лучше сравнить побайтово.

Автор: HalkaR 4.9.2003, 23:18
NightGoblin, не спорю smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)