Pokaż wyniki 1 do 4 z 4

Temat: Wiadomość od serwera [Perl irc bot]

  1. #1
    Avatar Hardiel
    Hardiel jest offline Damian
    Zarejestrowany
    May 2008
    Skąd
    Kielce
    Postów
    121

    Domyślnie Wiadomość od serwera [Perl irc bot]

    Witam Mam następujacy problem :

    Kod:
    if ($body =~ m/:(.*)!.*PRIVMSG (.*) :!mode/gis) { 
    if ($1 eq $admin){
    print $socket "MODE $nick\r\n";
    if ($body =~ m/221 $nick (.*)/gis) { 
    print $socket "PRIVMSG POKOJ :NICK_WYDAJACY_POLECENIE Mody :$1\r\n";
    }
    }
    }
    W bocie perlowym jak wiadomo zbieram z rawów przy pierwszym if'ie:
    $1 - nick
    $2 - pokoj
    i chciałbym aby te zmienne zostały jakoś zachowane do wyniku z 3 if'a zreszta... Nie mam pomysłu bo po wysłaniu do serwera rawa "mode $nick" otrzymuje od niego mody na nicku które zbieram w 'if ($body =~ m/221 $nick (.*)/gis) ' ale serwer nie zwraca pokoju i nicku wiec mam problem jak teraz wyprinować wynik czyli pokoj na ktorym została wydana komenda i nick zupełnie nie mam pomysłu


    Pozdrawiam

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    masz pokrecona logike... po pritn $socket powinienesz czytac cos a ty nadal operujesz na starej linii - oczywiscie drugie dopasowanie nigdy nic nie znajdzie - nie ma prawa... poszukam w domu swojego kodu botka na IO::Socket zobaczymy co mozna poprawic
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3
    Avatar Hardiel
    Hardiel jest offline Damian
    Zarejestrowany
    May 2008
    Skąd
    Kielce
    Postów
    121

    Domyślnie

    Dobra poradziłem sobie w następujacy sposób

    Kod:
    if ($body =~ m/:(.*)!.*PRIVMSG (.*) :!mode/gis) { 
    if ($1 eq $admin){
    $pokoj = $2;
    $nixx  = $1;
    print $socket "MODE $nick\r\n";
    }
    }
    if ($body =~ m/221 $nick (.*)/gis) { 
    print $socket "PRIVMSG $pokoj :$nixx Mody :$1\r\n";
    }

  4. #4
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    teraz duzo lepiej... co prawda IF nastepujace po print nie zadziala od razu ale zadziala... przy nastepnym obrocie calej petli

    Polecam zainteresowac sie struktura
    Kod:
    if (warunek) {
     # cos
    } elsif (warunek) {
     # cos
    } else {
     # zupelnie cos innego
    }
    w ten sposob jesli ktorys z pierwszych warunkow zostanie spelniony to pozostale nie sa juz analizowane i idziemy do nastepnego obrotu petli glownej... a robiac ciag if'ow zmuszasz system do analizy kazdego warunku nawet jesli juz ktorys zostal spelniony wczesniej.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Podobne wątki

  1. [Perl] Kurs Perl - cz.1 - wprowadzenie i podstawy
    By TQM in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 22
    Autor: 10-27-2014, 00:50
  2. Odpowiedzi: 18
    Autor: 07-14-2009, 11:55
  3. Odpowiedzi: 31
    Autor: 05-20-2008, 17:01
  4. Zaszyfrowana wiadomość ?
    By beforeme in forum Kryptografia
    Odpowiedzi: 3
    Autor: 03-28-2008, 12:26
  5. bot irc PERL
    By jaszu in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 1
    Autor: 08-01-2007, 08:40

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52