Не сложнее обратиться с запросом к поисковым системам. Для этого нужно в URL указать аргументы поиска. Формат строки запроса к конкретной поисковой машине можно посмотреть в строке браузера. Например, по такому URL можно искать книги по Perl в поисковой системе Google:
$url = 'http://www.google.ru/search?q=Perl+book';
А чтобы найти на сайте CPAN все модули, ориентированные на работу с HTML, нужно отправить такой запрос:
$url= 'http://search.cpan.org/search?query=HTML&mode=module';
Это примеры запросов, отправляемых методом GET, когда аргументы передаются непосредственно в строке, адресующей ресурс. При другом способе запрос отправляется методом POST, а данные запроса отправляются в теле запроса. Если требуется отправить из программы данные HTML-формы на HTTP-сервер методом POST, то это столь же просто делается с помощью LWP:
use LWP::UserAgent; # используем класс 'Клиент' из LWP
use HTTP::Request::Common qw(POST); # и метод POST
my $user_agent = LWP::UserAgent->new; # создаем клиента
# заполняем поля формы для отправки на нужный сайт
my $form = POST 'http://site.ru/cgi-bin/guestbook.pl',
[ nick => 'user', email => 'user@mail.ru',
comments => 'Спасибо за помощь!' ];
# передаем клиенту форму для отправки на сервер
my $response = $user_agent->request($form); # получаем ответ
print $response->as_string; # и выводим его в виде строки
Можно долго говорить о возможностях библиотеки LWP. С ее помощью можно: работать с новостными группами (news), обмениваться файлами по протоколу FTP, отправлять запросы к информационным системам Gopher, читать локальные файлы, отправлять электронную почту и создавать пользовательских агентов для автоматического исследования сайтов (web-роботов или "пауков"). Можно даже быстро набросать простой, но вполне работоспособный web-сервер. Для этого нужно воспользоваться классом
use HTTP::Daemon; # используем классы HTTP-сервера
my $server_root = '/tmp'; # каталог для файлов сервера
# создаем экземпляр WWW-сервера, слушающего порт 8080
my $httpd = new HTTP::Daemon(LocalPort => 8080); #
while (my $connection = $httpd->accept) { # ждем соединения
# получаем запросы на соединении
while (my $request = $connection->get_request) {
if ($request->method eq 'GET') { # выполняем GET
$connection->send_file_response( # отправляем файл
$server_root . $request->url->path); # из каталога
}
}
$connection->close; # закрываем соединение
undef($connection); # удаляем объект
} # и все повторяется сначала...
А теперь пора перейти к созданию программ, выполняющихся на web-сервере и взаимодействующих с ним через интерфейс CGI.
Упоминавшийся уже интерфейс программирования CGI поддерживается всеми web-серверами. Сегодня CGI-программы разрабатываются не на чистом Perl, а с использованием различных вспомогательных модулей и библиотек. Возможно, самой популярной из них по праву считается стандартная библиотека CGI. С ее помощью можно писать CGI-программы проще, быстрее и надежнее. Разработка программ CGI на Perl описывается во многих специализированных книгах.
В качестве примера напишем простенькую "гостевую книгу" - программу, которая с помощью функций библиотеки CGI (start_html, textfield и т.д.) выводит HTML-страницу с формой для отправки на сайт отзывов посетителей. После отправки данных формы на сервер вызывается эта же CGI-программа, которая с помощью функции param() проверяет, получены ли данные формы, и выводит присланный комментарий. Вот текст программы:
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии