Встроенные хеши
Переменные окружения, использующие встроенные хэши %SIG, %ENV, %FORM{}.
%SIG - хэш, в котором хранятся обработчики различных
ситуаций, возникающих в perl. Например строка local $SIG{__WARN__} = sub{}; отключает предупреждающие сообщения.
%ENV содержит значения переменных среды(окружения), заданных на момент запуска сценария(скрипта).
Ключами обычно бывают имена переменных среды(но их состав зависит от операционной системы), изменение этих значений
вызовет изменение окружения для процессов потомков.
#!/usr/bin/perl/ -w
while (($key, $value) = each(%ENV)){
print "$key => $value\n";
}
программа выдает:
SERVER_SOFTWARE => Apache/1.3.11 (FreeBSD) mod_perl/1.21 PHP/3.0.14
GATEWAY_INTERFACE => CGI/1.1
DOCUMENT_ROOT => /usr/local/www/data
UNIQUE_ID => OZaSFsHofQoAAEd@Cn8
REMOTE_ADDR => 195.202.122.14
SERVER_PROTOCOL => HTTP/1.0
SERVER_SIGNATURE => Apache/1.3.11 Server at www.mojdodir.ru Port 80
REQUEST_METHOD => GET
REMOTE_HOST => www.mojdodir.ru
QUERY_STRING =>
HTTP_USER_AGENT => Mozilla/4.73 [en] (Win98; I)
PATH => /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
HTTP_ACCEPT => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
HTTP_CONNECTION => keep-alive
REMOTE_PORT => 3633
SERVER_ADDR => 195.202.122.14
HTTP_ACCEPT_LANGUAGE => en,ru
HTTP_CACHE_CONTROL => max-age=259200
SCRIPT_NAME => /cgi-bin/1.pl
SCRIPT_FILENAME => /usr/local/www/cgi-bin/1.pl
HTTP_ACCEPT_ENCODING => gzip
SERVER_NAME => www.mojdodir.ru
HTTP_PRAGMA => no-cache
REQUEST_URI => /cgi-bin/1.pl
HTTP_ACCEPT_CHARSET => iso-8859-1,*,utf-8
HTTP_X_FORWARDED_FOR => 15.0.0.23
SERVER_PORT => 30
HTTP_HOST => www.mojdodir.ru
SERVER_ADMIN => webmaster@www.mojdodir.ru
HTTP_VIA => 1.0 cache.www.mojdodir.ru:3363 (Squid/2.3.STABLE1)
Непосредственно из скрипта элементы хэша %ENV можно вызывать
$ENV{'HTTP_CACHE_CONTROL'} или $ENV{'HTTP_USER_AGENT'},
смотря что нужно вызывать.
%FORM содержит данные, вводимые из формы методом POST: html форма такая:
<form action="/cgi-bin/1.pl" method="post">
<input type="text" name="name1" size=10 maxlength=10>
<input type="text" name="name2" size=10 maxlength=10>
<input type="text" name="name3" size=10 maxlength=10>
<input type="submit" value="send">
<input type="reset" value="reset"></form>
Если мы введем в поле name1 qwe, name2 rty, name3 asd и нажмем send, то через STDIN передаются данные в виде: name1=qwe&name2=rty&name3=asd и содержимое хэша
%FORM(
name1 => qwe,
name2 => rty,
name3 => asd);
Значения полей name* можно получать $FORM{'name1'}, $FORM{'name2'} и т.д.