Apologies, client code was a bit wrong. use strict; use IO::Socket; my $ITER = 10; my $forward_socket = IO::Socket::INET->new( Proto => 'tcp', PeerAddr => "localhost", PeerPort => 12345, # Timeout => 10, ) or die $!; for (my $i = 0; $i < $ITER; $i++) { print "Sending test $i\n"; $forward_socket->print("yyyyyyyyyyyyyyyyyyyyyyyyyyyy\n"); my $resp = $forward_socket->getline or print "ERROR $!\n"; print "Received $resp\n"; }