You might also want to look at Danga::Socket. I think it uses an epoll interface which should be optimal on Linux (maybe Event::Lib uses the same interface, not sure).
Djabberd (which I think is built on Danga::Socket) has scaled to more than 1k sockets, anyway: http://brad.livejournal.com/2230083.html.