Forum Webscript.Ru

Программирование => Perl => Тема начата: AnnA от 24 Января 2006, 20:33:30

Название: проверка условия
Отправлено: AnnA от 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 от 24 Января 2006, 20:49:20
а так

 if($cat_id && ($cat_id =~ m/[1..9]/) ) { ...
Название: проверка условия
Отправлено: AnnA от 24 Января 2006, 20:55:37
я так пробовала. правда ... несколько иначе: мне нужно исключить 4-ку. Т.е. [1..9] не подходит
Название: проверка условия
Отправлено: synthez от 24 Января 2006, 21:05:57
=) а так пробовала

if ($cat_id && ($cat_id !~ m/4/) )
{ ...
Название: проверка условия
Отправлено: AnnA от 24 Января 2006, 21:13:03
Цитировать
AnnA:
здесь $cat_id принимает значения от 1..18
Название: проверка условия
Отправлено: synthez от 24 Января 2006, 21:21:25
2AnnA
если я тебя понимаю, то $cat_id должно принимать значение от 1 до 18, но исключить 4, или как?
Название: проверка условия
Отправлено: AnnA от 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 от 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 от 25 Января 2006, 14:02:16
Kannabismus  ;)
спасибо за тактичность.
Вы правы:
это не работает: $cat_id=~m/1|2|3|5|6|7|8|9/
тогда как Ваш образец работает честно.