Привет народ, помогите кто чем может, уже не знаю что делать. В общем есть поток данных IRC сервера, но это не главное, главное то что бот принимает команды от юзеров, все бы хорошо но не устраивает результат:
| Код |
if( $data_string =~ /^!test/ ){ $s->send("PRIVMSG $chanel : Тестовая команда работает"); }
|
Когда пользователь набирает команду !test бот реагирует , но вот проблем если юзер введет скажем !testlalala то бот тоже реагирует как будто это !test, я это понимаю но нечего сделать не могу, пробовал уже использовать оператор eq но он не помогает в том смысле что бот просто не видет команды.
Пробовал даже так /^!test$/ один фиг , помогите составить рег.выражение что бы бот реагировал строго на !test а не на !testlalal и т.д
Ну чайник я в рег выражении не как въехать не могу.
Хотя проводил тест, сохранил лог с пару командами с 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 нет, у меня даже мысли были не разбивать входящий поток на массивы а тупо просто парсить полученную строку на найденный текст, но меня пока данный код устраивает. |