package Book::Eliza; use strict; use warnings FATAL => 'all'; use Apache::Connection (); use APR::Socket (); require Chatbot::Eliza; use Apache::Const -compile => 'OK'; use constant BUFF_LEN => 1024; my $eliza = new Chatbot::Eliza; sub handler { my $c = shift; my $socket = $c->client_socket; my $buff; my $last = 0; while (1) { my($rlen, $wlen); $rlen = BUFF_LEN; $socket->recv($buff, $rlen); last if $rlen <= 0; # \r is sent instead of \n if the client is talking over telnet $buff =~ s/[\r\n]*$//; $last++ if $buff =~ /good bye/i; $buff = $eliza->transform( $buff ) . "\n\n"; $socket->send($buff, length $buff); last if $last; } Apache::OK; } 1;