PERL: БИБЛИОТЕКА ПРОГРАММИСТА



              

PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 672


$|=1;        # Немедленный вывод следующей строки

printf "%s =>\n\t", $url;

my $ua = LWP::UserAgent->new();

$ua->agent("Schmozilla/v9.14 Platinum");

my $req = HTTP::Request->new(GET => $url);

$req->referer("http://wizard.yellowbrick.oz");

# Чтобы озадачить программы анализа журнала my $response = $ua->request($req); if ($response->is_error()) {

printf " %s\n", $response->status_line; } else {

my $count;

my $bytes;

my $content = $response->content();

Sbytes = length $content;

$count = ($content =" tr/\n/\n/);

printf "%s (%d lines, %d bytes)\n", $response->title(), $count, Sbytes; )

Программа выдает результаты следующего вида:

% titlebytes http://www.tpj.com/ http://www.tpj.com/    =>

The  Perl  Journal   (109  lines,   4530  bytes)

Обратите внимание: вместо правильного английского refer re r используется вариант написания referer. Ошибка была допущена разработчиками стандарта при выборе имени HTTP_REFERER.

> Смотри также---------------------------------------------------------------------------------------------

Документация по модулю LWP::Simple с CPAN и страница руководства Iwpcook(l), прилагаемая к LWP; документация по модулям LWP::UserAgent, HTTP::Request, HTTP-Response и URI::Heuristic; рецепт 20.2.

20.2. Автоматизация подачи формы

Проблема

Вы хотите передать сценарию CGI значения полей формы из своей программы.

Решение

Если значения передаются методом GET, создайте URL и закодируйте форму ме­тодом query_form:


20.2. Автоматизация подачи формы   707

use LWP: .'Simple; use URI::URL;

my $url = url('http://www.perl.com/cgi-bin/cpan_mod'); $url->query_form(module => -OB_File', readme => 1); $content = get($url);

Если вы используете метод POST, создайте собственного пользовательского агента и закодируйте содержимое:

use HTTP::Request::Common qw(POST); use LWP: .'UserAgent;

$ua = LWP::UserAgent->new();

my $req = POST  'http://www.perl.com/cgi-bin/cpanjnod',




Содержание  Назад  Вперед