# I am just showing some pieces of the code of course $net=new IO::Socket::INET(Proto => 'tcp', PeerAddr => $someserver, PeerPort => $someport); . . . $sel=new IO::Select($stdin,$net,$net2); . . . while (1) { foreach my $x ($sel->can_read(0.05)) { if ($x==$net) { &dosomething1; $net->flush; } elsif ($x==$net2) { &dosomething2; $net2->flush; } else { sysread($x,$in,1) or exit; if ($in eq "\n") { &dosomething3 $buffer; $buffer=''; $net->flush; } elsif ($in ne "\r") { $buffer.=$in; } } } }