#!/usr/bin/perl use Socket; use FileHandle; socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname("tcp")) or die "socket: $!"; setsockopt(SOCK, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) or warn "setsockopt: $!"; bind(SOCK, sockaddr_in(8080, inet_aton("localhost"))) or die "bind: $!"; listen(SOCK, SOMAXCONN) or die "listen: $!"; while ( accept(my $sock = FileHandle->new(), SOCK) ) { printf STDERR "before aliasing: sock=%d, STDIN=%d, STDOUT=%d\n", fileno($sock), fileno(STDIN), fileno(STDOUT); *STDIN = $sock; *STDOUT = $sock; printf STDERR "after aliasing: sock=%d, STDIN=%d, STDOUT=%d\n", fileno($sock), fileno(STDIN), fileno(STDOUT); $| = 1; print "enter something:\n"; my $r = ; print "you typed: $r"; close $sock; }