use Event; pipe(R,W); Event->io(fd=>\*R, poll=>"r", cb=>sub {sysread R, $r, 1 or warn "read: $!"; syswrite W, $r, 1 or warn "write: $!"; i++}); Event->signal(signal=>'ALRM', cb=>sub {printf "%d\t%d\n", ++$t, $i-$old_i; $old_i=$i; alarm 1}); alarm 1; syswrite W, "!" or die $!; Event::loop;