That's the way to do it using traditional system calls.
You can make your life a lot easier using
IO::Socket.
For instance, here's the preamble in your program:
use IO::Socket::INET;
my $socket = new IO::Socket::INET (
LocalPort => 8069,
Proto => 'tcp',
Listen => SO_MAXCONN);
while ($client_socket = $socket->accept())
{
print "Connection received from ",$client_socket->peerhost(),"
+\n";
# Do stuff with the $client_socket...
}
You've assigned $SIG{CHLD}, which implies that you're
doing some kind of
fork(), but this is not done. Maybe
this was stripped from the example. If you're not
forking,
you won't need it.
As for a "tail -f" equivalent in Perl, try this:
$good = 1;
while ($good)
{
while (<$LOGFILE>)
{
$client_socket->print($_) || $good = 0;
}
seek ($LOGFILE, 0, 1);
sleep 1;
}
There is a lot of other things you will want to handle
if you are using more than one connection, but this
is the basics.