#!/usr/bin/env perl use strict; use warnings; package TestServer; use base qw(Net::Server); sub process_request { my ($self) = @_; binmode(STDIN, ':bytes'); STDIN->blocking(0); while(1) { my $buf; sysread(STDIN, $buf, 1); if(defined($buf) && length($buf)) { my $num = ord($buf); print STDERR "GOT $num\n"; last if($num == 4); } else { print STDERR "...doing something else...\n"; sleep(1); } } print STDERR "Done.\n"; } TestServer->run(port => 8000);