use IO::Select; use IO::Socket; # step 1 $lsn = new IO::Socket::INET(Listen => 1, LocalPort => 8080); # do the step1 or three socket servers, of-course port has to be different. $sel = new IO::Select( $lsn ); # instead of passing only one socket server handle, pass all three handles. while(@ready = $sel->can_read) { foreach $fh (@ready) { #### if($fh == $lsn) { # Create a new socket $new = $lsn->accept; $sel->add($new); } else { # Process socket # Maybe we have finished with the socket $sel->remove($fh); $fh->close; } } }