IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Ошибки с условием в перл. (http://www.imho.ws/showthread.php?t=65364)

Mr.Vector! 31.07.2004 02:08

Ошибки с условием в перл.
 
Например у меня есть $codeuser = "31323334353637383919252B";
Я циклом делю все по парам т.е.
31
32
33
34
35
36
37
38
39
19
Потом проверяю присутствие неразрешенной пары (в данном случае - 19,25,2B).
И почему-то постоянно скрипт глючит. Помогите плиз... может я как-то неправильно условие задаю?

Са скрипт:
for ($i=0;$i<length($codeuser);$i+=2)
{
$_=substr($codeuser,$i,2);
if (($_ < 20) || ($_ eq '2B') || ($_ eq '2C') || ($_ eq '2F') || ($_ eq '3A') || ($_ eq '3B') || ($_ eq '3C') || ($_ eq '3D') || ($_ eq '3E') || ($_ eq '5B') || ($_ eq '5C') || ($_ eq '5E') || ($_ eq '3A') || ($_ eq '7B') || ($_ eq '7C') || ($_ eq '7F') || ($_ eq '22') || ($_ eq '23') || ($_ eq '24') || ($_ eq '25') || ($_ eq '26') || ($_ eq '27'))
{
print "error";
$_='';
exit;
}
}
$codeuser='';
#Вот плин... Какая-то ошибка в скрипте.

Sheryld 31.07.2004 03:48

этот код мог бы украсить даже этот сайт: http://thedailywtf.com :p

Mr.Vector! 31.07.2004 23:07

Цитата:

Sheryld:
этот код мог бы украсить даже этот сайт: http://thedailywtf.com
:confused: и зачем мне эта ссылка? за тем же наверное что и этот сайт...
Мне не нужно 'левых' ссылок - мне помошь нужна! ;)

rontommy 01.08.2004 13:04

Mr.Vector!
Советую почитать раздел про регулярные выражения на PERL.
А вот и решение твоей задачки
Код:

$codeuser = '3132333435363738391925';
 
@A = ($codeuser =~ /(\w\w)/g);
 
#print " $_" for @A; # just for testing
#print "\n"; # just for testing

@B = grep(/19|25|2B/,@A);
if (@B) {
  print "Error\nYou are using one or more of illegal symbols:";
  print " $_" for @B;
  print "\n";
}


EvroStandart 01.08.2004 16:12

А если ему нужен универсальный код для любой строки?

Может примерно так:

$_a=substr($codeuser,$i,2);
$_b=substr($codeuser,$i+2,2);
if (($_a+1 != $_b) )
{
print "error";
exit;
}

только тут нужно ещё из строки номер зделать. Не помню эту команду.

Mr.Vector! 03.08.2004 20:09

Всем огромное СпасибО! ;) :yees:


Часовой пояс GMT +4, время: 18:55.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.