# cli.pl: use strict; use warnings; use IO::Select; use IO::Socket; my $sock = IO::Socket::INET->new('127.0.0.1:1235') or die "sock: $@"; my $sel = IO::Select->new($sock); my $buffer = ''; while(@1 = $sel->can_read(2) and sysread $sock, $buffer, 4096, length $buffer) { while( $buffer =~ s/^.*\n// ) { my $line = $&; print "got: ", $line; # or whatever processing you want here... } } die @1 ? "socket closed" : "timeout";