Лучший выбор - проверить переменную окружения GATEWAY_INTERFACE
. Он будет содержать версию протокола CGI, используемого сервером, это почти всегда CGI/1.1
. Переменная HTTP_HOST
, упомянутая Тони Миллером (или любая переменная HTTP_*
), устанавливается, только если клиент ее предоставляет. Клиент редко, но не исключает возможность пропустить заголовок Host
, оставив HTTP_HOST
неустановленным.
#!/usr/bin/perl
use strict;
use warnings;
use constant IS_CGI => exists $ENV{'GATEWAY_INTERFACE'};
Если я в какой-то момент планирую запустить под mod_perl, я также проверю переменную окружения MOD_PERL
, поскольку она будет установлена при первой компиляции скрипта.
#!/usr/bin/perl
use strict;
use warnings;
use constant IS_MOD_PERL => exists $ENV{'MOD_PERL'};
use constant IS_CGI => IS_MOD_PERL || exists $ENV{'GATEWAY_INTERFACE'};