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


Автор: OutlawZ 6.5.2010, 20:45
Привет народ, помогите кто чем может, уже не знаю что делать. В общем есть поток данных IRC сервера, но это не главное, главное то что бот принимает команды от юзеров, все бы хорошо но не устраивает результат:

Код


if( $data_string =~ /^!test/ ){
 $s->send("PRIVMSG $chanel : Тестовая команда работает");
}


Когда пользователь набирает команду !test бот реагирует , но вот проблем если юзер введет скажем !testlalala то бот тоже реагирует как будто это !test, я это понимаю но нечего сделать не могу, пробовал уже использовать оператор eq но он не помогает в том смысле что бот просто не видет команды. 

Пробовал даже так /^!test$/ один фиг , помогите составить рег.выражение что бы бот реагировал строго на !test а не на !testlalal и т.д

Ну чайник я в рег выражении не как въехать не могу.  smile 

Хотя проводил тест, сохранил лог с пару командами с IRC потока, имитировал поток IRC, т.е открывал файл и искал команду вот тут то eq работал как надо без проблем т.е даже не применял рег.выражение.

Код

#!perl

open(FILE,"log.txt") or die "$!";
 
 while ($data = <FILE>) {
  
  @part = split(/:/,$data);
  @tmp = split(/!/,@part[1]);
   print $user = @tmp[0];
  @tmp = split(/ /,@tmp[1]);
   print $id = @tmp[0];
  @tmp = split(/ /,@part[1]);
   print $cmd = @tmp[1];
  @tmp = split(/ :/,$data);
   print $bot = @tmp[1];  
   
   chomp($bot);
   
   if($bot eq "!help"){
    print "Hello\n";
   }
}


Тут работает все как надо, а вот с потоком irc нет, у меня даже мысли были не разбивать входящий поток на массивы а тупо просто парсить полученную строку на найденный текст, но меня пока данный код устраивает.

Автор: arto 6.5.2010, 20:58
perldoc -f chomp, ну и perldoc perlvar на предмет $/

Автор: maxgray 6.5.2010, 20:58
Попробуй
Код

if( $data_string =~ /^(!test)$/)

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