SYNOPSIS use HTTP::Daemon::UNIX; # arguments will be passed to IO::Socket::UNIX, but Listen=>1 and # Type=>SOCK_STREAM will be added by default. also, HTTP::Daemon::UNIX will try # to delete stale socket first, for convenience. my $d = HTTP::Daemon::UNIX->new(Local => "/path/to/unix.sock"); # will print something like: "http:path/to/unix.sock" print "Please contact me at: url, ">\n"; # after that, use like you would use HTTP::Daemon while (my $c = $d->accept) { while (my $r = $c->get_request) { if ($r->method eq 'GET' and $r->uri->path eq "/xyzzy") { # remember, this is *not* recommended practice :-) $c->send_file_response("/etc/passwd"); } else { $c->send_error(RC_FORBIDDEN); } } $c->close; undef($c); } # client side code, using LWP::Protocol::http::SocketUnixAlt use LWP::Protocol::http::SocketUnixAlt; use LWP::UserAgent; use HTTP::Request::Common; my $ua = LWP::UserAgent->new; my $orig_imp = LWP::Protocol::implementor("http"); LWP::Protocol::implementor(http => 'LWP::Protocol::http::SocketUnixAlt'); my $resp = $ua->request(GET "http:path/to/unix.sock//uri/path"); LWP::Protocol::implementor(http => $orig_imp); DESCRIPTION This is a quick hack to enable HTTP::Daemon to serve requests over Unix sockets, by mixing in IO::Socket::UNIX and HTTP::Daemon as parents to HTTP::Daemon::UNIX and overriding IO::Socket::INET-related stuffs. Basic stuffs seem to be working, but this module has not been tested extensively, so beware that things might blow up in your face. SEE ALSO HTTP::Daemon LWP::Protocol::http::SocketUnixAlt