Модуль LWP осуществляет выборку документа, находящегося на удаленном сервере, только если он имеет более позднюю дату последнего изменения по сравнению с локальной копией. В любом случае этот сценарий сообщает результатах каждой попытки, как показано в следующем примере.
% mirror_rfc.pl 2616 1945 11 RFC 2616: OK RFC 1945; Not Modified RFC 11: Not Found
В данном случае сценарию был передан запрос выполнить выборку документов VC 2616, 1945 и 11. Отчеты с кодами состояния показывают, что был получен документ RFC 2616, выборка RFC 1945 не потребовалась, поскольку локальная копия является актуальной, a RFC 11 не мог быть считан с удаленного сервера, поскольку такого файла на этом сервере нет (и действительно, документа RFC 11 не существует).
Код этого сценария, приведенный ниже, состоит всего лишь из 15 строк.
#!/usr/local/bin/perl -w use strict; use LWP; use constant RFCS => 'http://www.faqs.org/rfcs/'; die "Usage: mirror rfc.pl rfcl rfc2...n" unless @ARGV; 6: my $ua = LWP::UserAgent->new; 7: my $newagent = 'mirror_rfc/l. 0 ('. $ua->agent 8: $ua->agent($newagent); 9: while (defined (my $rfc = shift)) { 10: warn "$rfc: invalid RFC numbern" &&..next unless $rfc =~ /Ad+$/; LI: my $ filename = "rfc$rfс.html"; 12: my $url = RFCS.$filename; 13: my $response = $ua->mirror($url,$filename); 14: print "RFC $rfc: ",$response->message,"n"; 15: }
Проведем анализ программы.
Строки 1-8. Загрузка модулей и создание объекта агента пользователя. Выполняется такая же настройка объекта lwp::UserAgent, как и в предыдущем примере, за исключением того, что соответствующим образом изменяется текст инструкции по использованию программы и идентификатор агента пользователя.
Строки 9-15. Главный цикл. Выполняется чтение номеров RFC из командной строки. Для каждого RFC создается локальное имя файла в форме rfcxxxx.html, где хххх— номер затребованного документа. Этот номер добавляется к базовому URL сервера, на котором хранятся документы RFC, для получения полного URL удаленного сервера.