Hello! I'm trying to learn about network programming and sockets in perl. I'm fairly new to the language, I just read Randal's book.
What I'm trying to do is a simple program that reads every line of <STDIN> from multiple clients and prints them on real time to <STDOUT> on a server. After a lot of googling, struggling with threads and fork, I ended up on the perl-doc page for IO::Select, which has a sample code that does almost exactly what I want. I modified it a bit and I have the following on the server side: $lsn = new IO::Socket::INET(Listen => 1, LocalPort => 9000); $sel = new IO::Select ( $lsn ); while (@ready = $sel->can_read) { foreach $fh (@ready) { if ($fh == $lsn) { $new = $lsn->accept; $sel->add($new); } else { while (<$fh>) { print; } $sel->remove($fh); $fh->close; } } } This works perfectly for the first client, all the lines are received as soon as you type them. But for a second client the lines are only displayed when the first client quits. It probably has to do with it getting stuck on that while <$fh> loop, but I can't see how to fix it. Seems like a very simple problem but I can't get myself around it. How to I make two or more clients have their lines printed simultaneously? Can someone point me in the right direction? Much appreciated, ~ Daniel.