Мой модуль HTTP :: Server :: Brick работает в Windows, но, к сожалению, тесты зависают на Strawberry Perl (он есть в списке задач), поэтому вам нужно либо выполнить установку вручную, либо просто скопируйте в один модуль perl и используйте cpan для установки зависимостей. Тем не менее, он прекрасно собирает / тестирует под Cygwin в Windows и, конечно, в Unix.
Вот как я бы выполнил ваше требование, используя HTTP :: Server :: Brick , отметив, что это довольно наивно и страдает от той же проблемы, что и у вас, в том, что нет верхнего предела числа потоков / процессов.
use strict;
use warnings;
use HTTP::Server::Brick;
use HTTP::Status qw(:constants);
my $server = HTTP::Server::Brick->new( port => 80 );
my $html = join '', <DATA>;
$server->mount( '/' => {
wildcard => 1,
handler => sub {
my ($req, $res) = @_;
$res->add_content($html);
return HTTP_SERVICE_UNAVAILABLE;
},
});
$server->start;
__DATA__
<html>
<head><title>Down for Maintenance</title></head>
<body>
<h2>Down for Maintenance</h2>
<p>The site is down for maintenance. It will be online again shortly.</p>
</body>
</html>
Также короткое примечание о комментариях к perl fork для окон, о которых известно, что они сломаны, в основном они просто используют потоки perl для имитации вызова fork (). Это не просто, но для простых ситуаций это простой способ использования потоков.
Последнее замечание - может быть, вам лучше установить Cygwin плюс пакет apache или lighthttpd? Отправка 503 для всех URL-адресов - довольно короткий файл конфигурации Apache.