According to
Re: IO::Select on Windows, the module
IO::Select works on Win32. Therefore you can use this to implement a socket server without forking. It may require some substantial changes to your code, but hopefully you'll be happier in the end. See the docs for a basic example of how to read from multiple sockets at once using this module.