while (my $connection = $listen_socket->accept) { my ($pid, $line, $in, $out); pipe $in, $out or die $!; if ($pid = fork) { close($out); warn localtime(time), " Connection recieved ... ", $connection->peerhost, $/; $connection->close(); # microsleep till the kid's awake do { select undef, undef, undef,.001} until kill 0, $pid; while(<$in>){$_ =~ s/a-z/A-Z/i;print $_;} close($in); } elsif (defined $pid){ close($in); $listen_socket->close; while(<$connection>){print $out $_;}; close($out); exit 0; } else { die "Error while forking: $@" unless defined $pid; } }