use strict; use warnings; use IO::Socket (); my $peer_port = shift(@ARGV) or die("Specify the port on the command line.$/"); my $server_fh = IO::Socket->new( Domain => IO::Socket::AF_INET(), Proto => 'tcp', PeerAddr => '127.0.0.1', PeerPort => $peer_port, ) or die("Unable to connect to server: $!$/"); print('Connected to ', $server_fh->peerhost(), ':', $server_fh->peerport(), '.', $/); print('Type stuff to be uppercased by server. Blank line to exit.', $/); for (;;) { last if (!defined($_ = ) || $_ eq $/); print $server_fh $_; last if (!defined($_ = <$server_fh>)); print; } print('Connection closed by server or by error or by request.', $/);