in reply to binding to a vhost using LWP

The title of this question raised a flag. The "v" in "vhost" typically means "virtual", which means something very specific when you're talking about hosting web sites (or targeting sites that have been virtually hosted). In virtual hosting, a number of different domains share a single IP address, with a single web server handling all requests (unless there's fancy load balancing going on, but let's imagine there's not). To distinguish incoming HTTP requests, the server examines the request envelope, looking for an HTTP/1.1 "Host" header, which carries the name of the target virtual host. The argument of the Host header is then used to "dispatch" to the desired virtual site.

All common web browsers are HTTP/1.1 compliant, and will issue a Host header as part of a request.

LWP is HTTP/1.1 compliant, and will automatically add a Host header to outgoing requests. But for this to work, you need to supply LWP with the target domain name, not the target's IP address.

None of this requires that you dive under the covers and invoke bind() yourself. Look over the LWP POD documentation for examples.