Автор Тема: проверка условия  (Прочитано 4684 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проверка условия
« : 24 Января 2006, 20:33:30 »
всем приветик. ;)
что-то у меня не работает такая конструкция:
if($cat_id and ($cat_id=~m/1|2|3|5|6|7|8|9/))  { ...
здесь $cat_id принимает значения от 1..18
странного хочется? разве это не должно работать или мне пора домой, на сегодня уже хватит?
понимаю интуитивно, что такая вот, работающая запись - нечто не совсем то, что мне надо:if($cat_id and ($cat_id==1 or $cat_id==2 or $cat_id==3 or $cat_id==5 or $cat_id==6 or $cat_id==7))
пока-пока. :)

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
проверка условия
« Ответ #1 : 24 Января 2006, 20:49:20 »
а так

 
if($cat_id && ($cat_id =~ m/[1..9]/) ) { ...
« Последнее редактирование: 24 Января 2006, 21:01:34 от synthez »
Software  like sex - it\'s better when it\'s free

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проверка условия
« Ответ #2 : 24 Января 2006, 20:55:37 »
я так пробовала. правда ... несколько иначе: мне нужно исключить 4-ку. Т.е. [1..9] не подходит
пока-пока. :)

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
проверка условия
« Ответ #3 : 24 Января 2006, 21:05:57 »
=) а так пробовала

if ($cat_id && ($cat_id !~ m/4/) )
{ ...
Software  like sex - it\'s better when it\'s free

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проверка условия
« Ответ #4 : 24 Января 2006, 21:13:03 »
Цитировать
AnnA:
здесь $cat_id принимает значения от 1..18
пока-пока. :)

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
проверка условия
« Ответ #5 : 24 Января 2006, 21:21:25 »
2AnnA
если я тебя понимаю, то $cat_id должно принимать значение от 1 до 18, но исключить 4, или как?
Software  like sex - it\'s better when it\'s free

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проверка условия
« Ответ #6 : 24 Января 2006, 21:37:12 »
нет. нужно мне было вот это:
if($cat_id and ($cat_id <10 and $cat_id!=4) ) { ...

конечно, лучший вариант, чем куча or, но хуже, чем if($cat_id and ($cat_id=~m/1|2|3|5|6|7|8|9/))  { ...
и все равно. А если бы было не 18 цифр, а 18 слов, тогда как проверять - писать ту вот кучу or?
пока-пока. :)

Оффлайн Kannabismus

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проверка условия
« Ответ #7 : 25 Января 2006, 00:23:18 »
Конструкция правильная и непонятно почему она не работает у Вас и работает у меня:
for my $cat_id (1..10){
   print "$cat_id" if $cat_id=~m/^(1|2|3|5|6|7|8|9|10)$/;
   print "-" if($cat_id and ($cat_id==1 or $cat_id==2 or $cat_id==3 or $cat_id==5 or $cat_id==6 or $cat_id==7));
   print "\\n";
}

perl test.pl
1-
2-
3-

5-
6-
7-
8
9
10

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проверка условия
« Ответ #8 : 25 Января 2006, 14:02:16 »
Kannabismus  ;)
спасибо за тактичность.
Вы правы:
это не работает: $cat_id=~m/1|2|3|5|6|7|8|9/
тогда как Ваш образец работает честно.
пока-пока. :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28