Строки 9-10. Открытие сокета. Открывается сокет, подключенный к удаленному Web-серверу. Если URL содержит номер порта, этот номер включается в имя хоста, которое присваивается параметру PeerAddr, а параметр PeerPort игнорируется. В ином случае параметр PeerPort указывает, что должно быть выполнено подключение к стандартной службе “http”, порт 80.
Строка 11. Отправка запроса. На сервер отправляется запрос HTTP в формате, описанном выше.
Строки 12-14. Чтение и печать заголовка. Первая операция чтения является построчной. Выполняется чтение из сокета с помощью оператора <>. Поскольку переменная $/ установлена равной паре последовательностей crlf, эта операция чтения охватывает весь заголовок вплоть до пустой строки. Затем выполняется вывод заголовка на устройство вывода, но поскольку необходимо избежать появления в выводимых данных лишних символов CR, вначале выполняется замена всех вхождений переменной $crlf логическим обозначением символа новой строки (“n”), который принимает значение символов новой строки, соответствующих текущей платформе.
Строка 15. Чтение и печать документа. Последующие операции чтения выполняются в двоичном режиме. В коротком цикле осуществляется вызов функции read(), чтение вплоть до 1024 байт в каждой операции, а затем их немедленный вывод с помощью функции print().Выход из цикла чтения происходит после того, как функция read() встречает условие конца файла eof и возвращает 0.