#!/usr/bin/perl
use warnings;
use IO::Socket;
my $servsock = IO::Socket::INET->new( Listen => 5,LocalPort => 5000);
sub reap { 
   wait(); 
   $SIG{CHLD} = \&reap;
} # catch and handle children dying
$SIG{CHLD} = \&reap;
while($client = $servsock->accept()) {
    if ($pid = fork()) {
        close $servsock; 
    } else {
        close $client; #let the child deal with the client socket
    }
}