ls listing.
    $ ls -l /dev/log
    srw-rw-rw-  1 root            0 Oct 31 07:23 /dev/log
You can test for these with Perl's -S file test:
    unless ( -S '/dev/log' ) {
	die "something's wicked with the print system";
    } 
Here's a sample Unix-domain client:
    #!/usr/bin/perl -w
    require 5.002;
    use Socket;
    use strict;
    my ($rendezvous, $line);
    $rendezvous = shift || '/tmp/catsock';
    socket(SOCK, PF_UNIX, SOCK_STREAM, 0)	|| die "socket: $!";
    connect(SOCK, sockaddr_un($rendezvous))	|| die "connect: $!";
    while ($line = <SOCK>) {
	print $line;
    } 
    exit;
And here's a corresponding server.
    #!/usr/bin/perl -Tw
    require 5.002;
    use strict;
    use Socket;
    use Carp;
    BEGIN { $ENV{PATH} = '/usr/ucb:/bin' }
    my $NAME = '/tmp/catsock';
    my $uaddr = sockaddr_un($NAME);
    my $proto = getprotobyname('tcp');
    socket(Server,PF_UNIX,SOCK_STREAM,0) 	|| die "socket: $!";
    unlink($NAME);
    bind  (Server, $uaddr) 			|| die "bind: $!";
    listen(Server,SOMAXCONN)			|| die "listen: $!";
logmsg "server started on $NAME";
    $SIG{CHLD} = \&REAPER;
    for ( $waitedpid = 0; 
	  accept(Client,Server) || $waitedpid; 
	  $waitedpid = 0, close Client) 
    {
	next if $waitedpid;
	logmsg "connection on $NAME";
	spawn sub { 
	    print "Hello there, it's now ", scalar localtime, "\n";
	    exec '/usr/games/fortune' or die "can't exec fortune: $!";
	};
    } 
As you see, it's remarkably similar to the Internet domain 
TCP server, so much so, in fact, that we've omitted
several duplicate functions--spawn(), logmsg,
ctime, and REAPER--which are exactly the same as
in the other server.
So why would you ever want to use a Unix domain socket instead of a simpler
named pipe? Because a named pipe doesn't give you sessions. You can't tell
one process's data from another's. With socket programming, you get a
separate session for each client: that's why accept takes two
arguments.
For example, let's say that you have a long running database server daemon that you want folks from the World Wide Web to be able to access, but only if they go through a CGI interface. You'd have a small, simple CGI program that does whatever checks and logging you feel like, and then acts as a Unix-domain client and connects to your private server.