my $rsel = IO::Select->new(); my $wsel = IO::Select->new(); ... for (;;) { my ($rready, $wready) = IO::Select->select($rsel, $wsel); foreach my $rsocket (@$rready) { ... } foreach my $wsocket (@$wready) { ... } }