На самом деле нет никакого способа узнать, был ли ваш скрипт запущен веб-сервером или из командной строки. Любая из переменных среды может быть установлена в обеих ситуациях. Например, я часто запускаю программы CGI прямо из командной строки, чтобы проверить их.
Зная, что если вы хотите выбрать одну переменную среды для использования, это просто должна быть та, которую вы не установите в другой ситуации, или та, которую вы задали в обеих, но присваиваете разные значения. В этом случае выберите любую переменную среды, которая вам нравится.
Если вы хотите стать более сложным, вы можете использовать что-то вроде IO :: Interactive , чтобы определить, подключены ли вы к терминалу. Если нет, то filehanandle, который возвращает is_interactive
, является пустым дескриптором файла, и вывод не идет никуда:
print { is_interactive() } $http_header;
Если вам не нравится, как решает IO :: Interactive , вы можете переопределить is_interactive
. Это очень короткий кусок кода, и интерфейс более высокого уровня очень хорош.