#!/usr/bin/perl -w -T package MyPackage; use strict; use base qw(Net::Server::PreFork); MyPackage->run({port => 9000, no_client_stdout => 1}); sub process_request { my $self = shift; eval { local $SIG{'ALRM'} = sub { die "Timed Out!\n" }; my $timeout = 5; my $sock = $self->{server}->{client}; $sock->autoflush(1); $|=1; binmode $sock; my $buf; while (read ($sock, $buf, 94) != 0 ){ #sleep(5); print $sock "client said '$buf'\r\n"; print "client said '$buf'\r\n"; alarm($timeout); } print $buf; alarm(0); }; if ($@ =~ /timed out/i) { print STDOUT "Timed Out: $@.\r\n"; return; } }