Проведем анализ программы, приведенной в прошлой части.
Строки 1-4. Загрузка модулей. Включена строгая проверка синтаксиса и загружен модуль lwp. Кроме того, определен постоянный префикс URL для использования при выборке требуемого документа RFC.
Строка 5. Обработка параметров командной строки. Выполняется проверка того, задан ли в командной строке хотя бы один номер RFC, и, если нет, вызывается функция die, которая выводит на экран краткую инструкцию по использованию программы.
Строки 6-8. Создание объекта агента пользователя. Создается новый объект LWP::UserAgent, и применяемое по умолчанию значение поля User-Agent: этого объекта изменяется на get_rfc/1.0. За ним следует первоначальный, применяемый по умолчанию идентификатор агента пользователя, заключенный в круглые скобки.
Строки 9-18. Главный цикл. Для каждого документа RFC, перечисленного в командной строке, создается соответствующий URL и используется для создания нового запроса get объекта http::Request. Этот запрос передается методу request() объекта агента пользователя и проверяется полученный ответ. Если метод is_success () объекта ответа указывает на успешное выполнение, полученное информационное наполнение выводится на стандартное устройство вывода. В ином случае выдается предупреждение, в котором применяется сообщение с кодом состояния ответа.
Зеркальное отображение списка документов RFC. В следующем примере приведен тот же сценарий с небольшими изменениями. Вместо выборки затребованных документов RFC и отправки их на стандартное устройство вывода, выполняется создание их зеркальных, локальных копий в виде файлов, хранящихся в текущем рабочем каталоге.