Скрипт CGI, отображающий переменные окружения.

назад

Ниже приведён пример скрипта, который выводит имена и значения переменных окружения.

Напомним: Perl хранит все доступные ему переменные окружения в хэше (ассоциативный массив) %ENV. Ключи %ENV - это имена переменных окружения, а соответствующие им значения - текущие значения этих переменных.

Код скрипта:

Давайте теперь подробно распишем как он работает. Для начала пронумеруем строки:


01: #!/usr/bin/perl -wT
02: $|=1;
03: print "Content-type: text/html\n\n";
04: print <<HTML;
05: <HTML>
06: <HEAD>
07: <TITLE>Окружение сервера</TITLE>
08: </HEAD>
09: <CENTER><H2>Окружение сервера</H2></CENTER>
10: <BODY>
11: HTML
12: print qq($_ - $ENV{$_}<BR>) for sort keys %ENV;
13: print qq(
14: </BODY>
15: </HTML>
16: );

Теперь рассмотрим каждую строчку:

Строка 1
Обычная строка с указанием пути к интерпретатору и переключателей. Здесь мы включаем предупреждения переключателем -w. Хотя переключатель -w для этого скрипта не очень нужен, его использование - просто хорошая традиция. По этой же традиции включена проверка на загрязнение (переключатель -T). Гораздо лучше и безопаснее установить в самом начале максимум защиты и предупреждений, а затем, после проверки, ослабить защиту, где это возможно. Вообще, в CGI рекомендуется устанавливать столько мер безопасности, сколько возможно.

Строка 2
Производит автосброс буфера, так что мы можем увидеть результаты сразу после получения.

Строка 3
Выводит в Web-клиент информацию заголовка. Благодаря этому клиент будет ожидать файл, содержащий текст в формате HTML.

Строка 4
Начинает включённый документ с разделителя HTML.

Строки 5-10
Строки HTML, выводимые во включённом документе.

Строка 11
Признак конца включённого документа. Запомните, что он должен стоять в начале строки и в отдельной строке.

Строка 12
Сам механизм скрипта. Здесь выводятся все пары ключей и значений, содержащихся в %ENV. Эти пары перечисляются в алфавитном порядке для удобства чтения.

Строки 13-16
Оператор print(), который закрывает дескрипторы HTML <BODY> и <HTML>.