sub authenticate { my ($self, $session) = @_; # $session is undef. return 1; } sub start { while (1) { next unless $session = $self->__socket->accept; my $quit = 0; if (!authenticate($session)) { $session->shutdown; next; } ... while (! $quit) { my $request; read($session, $request, 150); if ($request =~ /^Q\s+/i) { $quit = 1; } else { print $session 'foo response'; }; }; close($session); next; }; ... }