while (($new_sock, $c_addr) = $sock->accept()) { die "Can't fork: $!" unless defined ($pid = fork()); if ( $pid == 0 ) { # Child code $sock->close; my ($client_port, $c_ip) = sockaddr_in($c_addr); my $client_ipnum = inet_ntoa($c_ip); my $client_host = gethostbyaddr($c_ip, AF_INET); print "CHILD CODE [cpid::$$]: Connection from: $client_host [$client_ipnum ", $new_sock->peerport, "] \n\n"; while (defined($buf = <$new_sock>) ) { if ($buf =~ /^EXECUTE:(.*)/ ) { print $1, "\n"; system("/msg/spgear/tools/bin/perl $1") || die "Could not run program: $1 -- $!\n"; my $rtn = $?; print $new_sock "RETURN CODE: $rtn", "\n"; } else { print "INVALID SYNTAX\n"; print $new_sock "INVALID SYNTAX\n"; } } exit 0; } else { # Parent code $new_sock->close; print "\nPARENT CODE [ppid::$$ cpid:$pid]\n"; } }