in reply to Sockets and Fork, Please Help Me!!

I have used Net::Telnet and STDIN with fork successfully, I used IPC::Shareable to create shared memory which the main loop can monitor. You just have to be really careful about locking the shared memory when any of the procs accesses it.

Update: It seems this response was not liked by some, so I thought I would clarify.

The above responses were excellent, the problem is if you want your telnet sockets and STDIN to go about thier business and report results back to you which you can reap at any time, AND self terminate reporting that as well, the above approach can run into overhead.

If all you need is to monitor output from the telnet sessions there is really no need for those to slow down the response time in your IO::Select loop, all you need to do is fork a couple watchers that do what they need and report stats when they hit things of interest, and at that point you can do what ever you need to to handle the situation, including interupting the STDIN loop.

Just another way to do it. I like shared memory, but you can use pipes, Unix sockets or whatever method you want to communicate between the processes.

"Nothing is sure but death and taxes" I say combine the two and its death to all taxes!