in reply to Can a socket listen for multiple hosts?

This is possible. If it wasn't, one couldn't make a webserver with any decent throughput.

The "trick" is to either use threads, forks, or a select loop. The main loop waits for a connection, does an accept, and then have a child or thread deal with the connection. Or, in the case of a select loop, you've another handle to dispatch on.

See also man perlipc, section "Internet TCP Clients and Servers", although that sections predates IO::Socket.