Have a look at Corion's Future::HTTP, it supports multiple backends that allow for asynchronous HTTP requests. Just note that the default backend, if none of the event loops could be found, is HTTP::Tiny, which is synchronous, so make sure to load (and start) one of the supported event loops.
Update: Now that Corion has released Future::HTTP 0.14, you can use the is_async method to confirm that the requests will indeed be asynchronous, e.g. my $ua = Future::HTTP->new(); die "UA is not asynchronous" unless $ua->is_async;