my $sockets = IO::Select->new(); $sockets->add($server); $sockets->add($sock1); $sockets->add($sock2); while(1) { my @handles = $sockets->can_read(3); foreach my $handle (@handles) { if($handle == $server) { # Accept new client connection from server } elsif($handle == $sock1) { # Do something with info from $sock1 } elsif ... # etc etc. } # last when whenever.. }