#!/usr/bin/env perl use v5.10.1; use IO::Select; use IO::Socket::UNIX; use threads; die("Give at least the socket file as argument") if (! @ARGV); my $sock_path = shift @ARGV; my $socket = IO::Socket::UNIX->new( Type => SOCK_STREAM, Peer => $sock_path, ); die "Can't read socket ($sock_path): $!" unless $socket; if (@ARGV) { while (my $arg = shift @ARGV) { say $socket $arg; } } my $s = IO::Select->new(); $s->add(\*STDIN); $s->add($socket); while ($s->count()) { for my $rd ($s->can_read(0.25)) { my $line = <$rd>; chomp($line); if ($rd == \*STDIN) { say $socket $line; } elsif ($rd == $socket) { say $line; } } }