Forum Webscript.Ru
Программирование => Perl => Тема начата: 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))
-
а так
if($cat_id && ($cat_id =~ m/[1..9]/) ) { ...
-
я так пробовала. правда ... несколько иначе: мне нужно исключить 4-ку. Т.е. [1..9] не подходит
-
=) а так пробовала
if ($cat_id && ($cat_id !~ m/4/) )
{ ...
-
AnnA:
здесь $cat_id принимает значения от 1..18
-
2AnnA
если я тебя понимаю, то $cat_id должно принимать значение от 1 до 18, но исключить 4, или как?
-
нет. нужно мне было вот это:
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?
-
Конструкция правильная и непонятно почему она не работает у Вас и работает у меня:
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
-
Kannabismus ;)
спасибо за тактичность.
Вы правы:
это не работает: $cat_id=~m/1|2|3|5|6|7|8|9/
тогда как Ваш образец работает честно.