#! perl use strict; use warnings; use IO::Socket; use IO::Select; use constant BUFSIZE => 1024; my $host = "localhost"; my $port = 80; my $socket = IO::Socket::INET->new("$host:$port") or die $@; my $readers = IO::Select->new() or die "Error: can't create IO::Select read object\n"; $readers->add(\*STDIN); $readers->add($socket); my $buffer = ""; print "starting loop\n"; while(1){ my @ready = $readers->can_read; for my $handle (@ready) { print STDERR "STDIN ready\n"; if ($handle eq \*STDIN) { print "STDIN ready\n"; if (sysread(STDIN, $buffer, BUFSIZE) > 0) { syswrite($socket, $buffer); } else { $socket->shutdown(1); } } if ($handle eq $socket) { print STDERR "SOCKET ready\n"; if (sysread($socket, $buffer, BUFSIZE) > 0) { syswrite (STDOUT, $buffer); } else { warn "Connection closed by foreign host\n"; exit 0; } } # if } # for @ready } # forever