Как мне получить вывод WWW: Curl :: Easy в переменную в Perl - PullRequest
0 голосов
/ 28 апреля 2011
use WWW::Curl::Easy;

$curl->setopt(CURLOPT_HEADER,1);    
$curl->setopt(CURLOPT_RETURNTRANSFER,1);    
$curl->setopt(CURLOPT_URL,"http://foo.com/login.php");
$curl->setopt(CURLOPT_POSTFIELDS,"user=usertest&pass=passwdtest");
$curl->perform();

Это будет распечатано так. Как получить вывод в переменную из функции execute?

HTTP / 1.1 302 Найдено Cache-Control: no-cache, must-revalidate Срок действия истекает: Суббота, 11 января 200 05:00:00 по Гринвичу Расположение:? Cookiecheck = 1 Тип контента: текст / html Дата: чт, 28 Апр 2011 09:15:57 GMT Сервер: xxxx / 0.1 Content-Length: 0 Соединение: Keep-Alive Set-Cookie: AUTH = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; истекает = суббота, 27 апреля 2013 г. 09:15:57 GMT; Путь = /; домен = .foo.com

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

Я согласен с PacoRG, что вам, скорее всего, стоит подумать об использовании модуля из пространства LWP::.Поскольку у вас есть более конкретные потребности, я бы порекомендовал LWP::UserAgent.

При этом, если вам действительно нужно получить что-то, что печатается, вместо того, чтобы сохранить его в переменной, мы можем сыгратьнекоторые игры с более глубокой магией Perl.

# setopt method calls here

## the variable you want to store your data in
my $variable;

{
  ## open a "filehandle" to that variable
  open my $output, '>', \$variable;

  ## then redirect STDOUT (where stuff goes when it is printed) to the filehandle $output
  local *STDOUT = $output;

  ## when you do the perform action, the results should be stored in your variable
  $curl->perform();
}

## since you redirected with a 'local' command, STDOUT is restored outside the block
## since $output was opened lexically (with my), its filehandle is closed when the block ends

# do stuff with $variable here

Возможно, у WWW::Curl::Easy есть лучший способ сделать это, так как я не знаю команд этого модуля, я предоставил вам хак, который сделает то, что вам нужно.

0 голосов
/ 28 апреля 2011

Что вы пытаетесь сделать?Может быть LWP :: Simple - это то, что вам нужно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...