in reply to Perl select function mystery

The $rout = $rin stuff makes a copy of the read bits in $rin and passes that to select so that $rout is modified but $rin remains the same.

$rout then contains a bitmask of the available file handles (selected from the bitmask in $rout $rin). $nfound is the total number of "ready" filehandles. $wout will contain file handles ready for writing and $eout will contain file handles that have errors.

All this is done via bit masks. The bit number corresponds with the fileno of the handle. I.e. bit 0 (value 1) is for fileno 0, bit 1 (value 2) is for fileno 1 etc.

At least that how I assume it works. Personally, I find IO::Select much clearer and easier to use. I suggest you take a look at that.

update: fixed mistake - thanks rodion :-)