When you exec another process it has access to any open
file-handles within your program whose system file desriptor
is within the value of $^F.
in reply to launching another program but using the existing socket
The system uses file numbers 0=STDIN, 1=STDOUT, 2=STDERR and
anything else is higher.
To open using just the fileno, first
discover the socket's using fileno($socket) or $socket->fileno
and pass that to the execed program on command line or with environment
Then use the open syntax open FOO, ">& $fileno";
or whatever it is in the open documentation, or use
$fh = File::Handle->new_from_fd and $fh->fdopen with the fileno.
Alternativly follow nardo's advice because those filehandles are
always inherited by an exec'ed process and that will make the client program compatible with inetd.