AnyEvent とは これまで、イベントドリブンフレームワークの実装には、 POE , Danga::Socket , EV , Event などいろいろあって、互換性もなく混乱した状況でした。 AnyEvent はそういう諸々の API を、データベースへの API で考えられた DBI の様に抽象化したもので、具体的な実装には依存せず、どの(Any)イベントドリブンフレームワークを用いても、同じコードで動きます。今後は AnyEvent で書いておけば安心です。 基本的な考え方 イベントハンドラにコールバック関数を登録します。 具体的には、on_readみたいなところに関数リファレンスを入れておく。 イベントループを回します。 具体的には、$cv = AE::cv でcondvarを作って、$cv->recv で処理をブロックしておけばよい。 AnyEvent->condvar がピンとこない Condition variable? 状態は送信前と送信後の2つあります。ボンバーマンで考えると、リモコンボムです。具体的には、爆発する前の状態と、リモコンを使って爆発させた後の状態の2つです。 送信側は、$cv->send 受信側は、$cv->recv (届くまでブロック) または、$cv->cb($cb) (届いたら$cb->($cv)が実行される) AE と AnyEvent の違いが良くわからん AE の方が改良版の高速なAPIです。 AnyEvent->condvar と AE::cv $w = AnyEvent->timer(after => $after, interval => $interval, cb => $cb) と $w = AE::timer($after, $interval, $cb) 以上の関係を覚えればだいたいOK hello world こんな感じでいかがでしょうか。helloが出て、1秒後に world が出ます。 use strict; use warnings; use AnyEvent; my $done = AE::cv; my $t = AE::timer 1, 0, sub { print ...