#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11107384 use warnings; use IO::Socket; use IO::Select; $| = 1; # auto-flush on socket @ARGV == 2 or die "IP and Portnumber needed"; my ($server_ip,$server_port)=@ARGV; # create a connecting socket my $socket = new IO::Socket::INET ( PeerHost => $server_ip, PeerPort => $server_port, Proto => 'tcp', ); die "cannot connect to the server $!\n" unless $socket; my $read_handler = IO::Select->new(); $read_handler->add($socket, *STDIN); my $send_buffer; while(1) { my @sockets_ready =$read_handler->can_read(); foreach my $read (@sockets_ready) { my $buffer; if( sysread $read, $buffer, 1024 ) { if( $read eq $socket ) { print $buffer; } else { print $socket $buffer; } } else { die "socket closed"; } } }