use strict; use warnings; use IO::Handle; use IO::Select; my $s = IO::Select->new(); ... $s->add(0); # STDIN $s->add($telnet->fileno()); $s->add($telnet2->fileno()); while(1) { my @ready = $s->can_read(); last unless @ready; foreach my $fd (@ready) { &handleTelnet1() if $telnet->fileno() == $fd; &handleTelnet2() if $telnet2->fileno() == $fd; &handleStdin() if 0 == $fd; } } ...