Анимация
JavaScript
|
Главная Библионтека Сейчас вы могли бы сделать все это вручную с помощью броузера, но, поскольку графические интерфейсы соверщенно не приспособлены для автоматизации программирования, это был бы медленный и утомительный процесс, требующий большего терпения и меньшей лености*, чем присущи большинству из нас. Модули LWP (Library for WWW access in Perl - библиотека для доступа к WWW на Perl) из CPAN решают за вас все эти задачи - и даже больше. Например, обращение в сценарии к Web-документу с помощью этих модулей осуществляется настолько просто, что его можно выполнить с помощью одностроковой программы. Чтобы, к примеру, получить документ /реН/index.html с узла www.perl.сот, введите следующую строку в свой shell или интерпретатор команд: perl -MLWP::Simple -е "getprint http: www.perl.com/perl/index.html" За исключением модуля LWP:: Simple, большинство модулей комплекта LWP в значительной степени объектно-ориентированы. Вот, например, крошечная программа, которая получает URL как аргументы и вьщает их названия; #!/usr/local/bin/perl use LWP; $browser = LWP::UserAgent->new(); # создать виртуальный броузер $browser->agent("Mothra/126-Paladium:); # дать ему имя foreeach $url (@ARGV) { # ожидать URL как аргументы # сделать GET-запрос по URL через виртуальный броузер $webdoc = $browser->request(HTTP::Request->new(GET => $url)); if($webdoc->is success) { # нашли print STDOUT "$url: :, $result->title, "\n"; } else { # что-то не так print STDERR "$0: Couldnt fetch $url\n"; } Как видите, усилия, потраченные на изучение объектов Perl, не пропали даром. Но не забывайте, что, как и модуль CGLpm, модули LWP скрывают большую часть сложной работы. Этот сценарий работает так. Сначала создается объект - пользовательский агент (нечто вроде автоматизированного виртуального броузера). Этот объект используется для выдачи запросов на удаленные серверы. Дадим нашему виртуальному броузеру какое-нибудь глупое имя, просто чтобы сделать файлы регистрации пользователей более интересными. Затем получим удаленный документ, направив HTTP-запрос GET на удаленный сервер. Если результат успешный, выведем на экран URL и имя сервера; в противном случае немножко поплачем. Помните, что по Ларри Уоллу три главных достоинства программиста есть Леность, Нетерпение и Гордость. Вот программа, которая выводит рассортированный список уникальных ссылок и изображений, содержащихся в URL, переданных в виде аргументов командной строки. #/usr/local/bin/perl -w use strict; use LWP 5.000; use ORI::URL; use HTML::LinkExtor; my($url, $browser, %saw); $browser = LPW::UserAgent->new(); # создать виртуальный броузер foreach $url ( @ARGV ) { # выбрать документ через виртуальный броузер my 5webdoc = $browser->request(HTTP: :Request->new(GET => $url)); next unless $webdoc->is success; next unless $webdoc->content type eq text/html; # не могу разобрать GIF-файлы my $base = $webdoc->base; # теперь извлечь все ссылки типа <А ...> и <IMG ...> foreach (HTML::LinkExtor->new->parse($webdoc->content)->eof->1inks){ my($tag, %links) = @$ ; next unless $tag eq "a" or $tag eq "img"; my 51ink; foreach $link (values %links) ( $saw{ url($link, $base)->abs->as string }++; print join("\n",sort keys %saw), "\n"; Ha первый взгляд все кажется очень сложным, но вызвано это, скорее всего, недостаточно четким пониманием того, как работают различные объекты и их методы. Мы не собираемся здесь давать пояснения по этим вопросам, потому что книга и так получилась уже достаточно объемной. К счастью, в LWP можно найти общирную документацию и примеры. Дополнительная литература Естественно, о модулях, ссылках, объектах и Web-программировании можно рассказать гораздо больше, чем вы узнали из этой маленькой главы. О CGI-программировании можно написать отдельную книгу - и таких книг уже написаны десятки. Приведенный ниже перечень поможет вам продолжить свои исследования в этой области. • Файлы документации CGI.pm. • Библиотека LWP из CPAN. • CGf Programming on the World Wide Web by Shishir Gundavaram (OReilly & Associates). • Web Client Programming with Perl by Clinton Wong (OReilly & Associates). • HTML: The Definitive Guide by Chuck Musciano and Bill Kennedy (OReilly & Associates). • How to Setup and Maintain a Web Site by Lincoln Stein (Addison-Wesley). • CGI Programming in С and Perl by Thomas Boutell (Addison-Wesley). • Сборник FAQ no CGI Ника Кью. • Man-страницы: perltoot, perlref, perlmod, perlobj. Упражнения 1. Напишите программу для создания формы, содержащей два поля ввода, которые при передаче данных формы объединяются. 2. Напишите CGI-сценарий, который определяет тип броузера, делающего запрос, и сообщает что-нибудь в ответ. (Совет: воспользуйтесь переменной среды HTTP USER AGENT.) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 [ 82 ] 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |