Если выполнение метода new() оканчивается неудачей, возвращается значение undef. В ином случае функция возвращает трехэлементный список, состоя щи из открытого дескриптора файла, кода типа файла и длины файла.
Строки 49-66. Функция redirect (). Эта функция предназначена для отправки в броузеру сообщения о возможном перенаправлении. Она вызывается, если броузер запрашивает путь, который оканчивается именем каталога, но не содержит заключительного символа косой черты. Конечная цель этой функции состоит в передаче примерно такого документа:
Важной частью этого документа является код состояния 301, который означает, что для документа “определено другое постоянное местонахождение”, и поле Location, содержащее полный URL, по которому теперь можно найти этот документ. Остальная часть представляет страницу, предназначенную для восприятия человеком, которая будет отображаться в тех броузерах (очень старых), которые не распознают команду перенаправления.
В основе работы функции redirect () лежит исключительно простой принцип. Восстанавливается IP-адрес хоста сервера и приемный порт путем вызова методов sockhost () и sockport () подключенного сокета. Затем на основе этих значений вырабатывается соответствующий документ.
Эта версия функции redirect ( ) имеет небольшой стилистический недостаток, поскольку в ней имя хоста сервера заменено IP-адресом, представленным в виде четырех чисел, разделенных точками. Это можно исправить путем вызова функции gethostbyaddr () для преобразования адреса в имя хоста и, возможно, дополнительного кэширования результата в глобальной переменной в целях повышения производительности.