<div dir="ltr"><div><div><div>Решил просветиться на тему Coro+AnyEvent<br><br></div>Написал простейший сервер<br>==========================================<br>#!/usr/bin/perl<br>use EV;<br>use Coro::AnyEvent;<br>use Coro::Handle;<br>use AnyEvent::Socket qw(tcp_server);<br><br><br>my $channel = Coro::Channel->new();<br>tcp_server undef, 2000, sub {<br>    my $fh = unblock shift;<br>    my $no = fileno $fh;<br>    async_pool {<br>        print STDERR "connected\n";<br>        last if !$fh->print( "Hi\n");<br>        while(my $msg=$channel->get()){<br>            my ($id, $msg) = split " ", $msg, 2;<br>            next if $id eq $no;<br>            last if ! $fh->print("$id> $msg\n");<br>        }<br>    };<br>    async_pool {<br>        while(defined( my $line = $fh->readline)){<br>            chomp $line;<br>            $channel->put(join " ", $no, $line);<br>        }<br>    };<br>    return;<br>};<br>AE::cv->recv;<br>=========================================<br><br>При подключении получаю ошибку<br>=========================================<br>connected<br>EV: error in callback (ignoring): FATAL: $Coro::idle blocked itself - did you try to block inside an event loop callback? Caught at /usr/local/lib/perl/5.14.2/Coro/Channel.pm line 83.<br>        Coro::Channel::get('Coro::Channel=ARRAY(0x8c05f98)') called at /home/gtoly/<a href="http://ev.pl">ev.pl</a> line 15<br>        main::__ANON__('GLOB(0x8c2317c)', 127.0.0.1, 32812) called at /usr/lib/perl5/AnyEvent/Socket.pm line 1194<br>        AnyEvent::Socket::__ANON__('EV::IO=SCALAR(0x8c3acf8)', 1) called at /usr/local/lib/perl/5.14.2/Coro/EV.pm line 71<br>        eval {...} called at /usr/local/lib/perl/5.14.2/Coro/EV.pm line 71<br>        Coro::EV::__ANON__ called at /usr/local/lib/perl/5.14.2/Coro.pm line 715<br>        Coro::_coro_run called at /home/gtoly/<a href="http://ev.pl">ev.pl</a> line 0<br>=========================================<br><br></div>Что такое, и как это починить? <br></div><br><div><div><br></div></div></div>