Модуль Curl Perl не работает, отсутствует метод formadd - PullRequest
1 голос
/ 14 августа 2010

Я хочу использовать следующий скрипт:

use FileHandle;
use WWW::Curl::Easy;
use WWW::Curl::Form;

my $file, my $curl, my $curlf, my $return, my $minified;

$file = new FileHandle();

$curl = new WWW::Curl::Easy();
$curl->setopt(CURLOPT_URL, "http://closure-compiler.appspot.com/compile");
$curlf = new WWW::Curl::Form();
$curlf->formadd('output_format',      'text');
$curlf->formadd('output_info',        'compiled_code');
$curlf->formadd('compilation_level',  'ADVANCED_OPTIMIZATIONS');
$curlf->formaddfile($name, 'js_code', 'multipart/form-data');
$curl->setopt(CURLOPT_HTTPPOST, $curlf);

$file->open(\$minified, ">");
$curl->setopt(CURLOPT_WRITEDATA, $file);
$return = $curl->perform();

Выдается следующая ошибка:

Can't locate object method "formadd" via package "WWW::Curl::Form" at ./minifyjs.pl ....

ПОЧЕМУ ??? Модуль WWW :: Curl установлен правильно, я использовал пакет libwww-curl-perl в Debian / Ubuntu.

Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 2 ]

4 голосов
/ 14 августа 2010

Упс.

Похоже, этот коммит прерван formadd.Подпрограмма XS не соответствует объявлению PREFIX = curl_form_ (так как она называется curl_formadd), поэтому perl не знает, как отобразить версию метода Perl обратно в XS.

4.12 был первымРелиз, который пытался поддерживать WWW::Curl::Form, похоже, он не работал в конце концов.Не уверен, как я скучал по этому.Вероятно, я должен отметить, что поддержка WWW::Curl::Form не была в списке элементов TODO с высоким приоритетом из-за наличия в CPAN различных высококачественных модулей обработки форм.Я принял патч только для полноты возможностей.Рекомендуется использовать эти модули для управления содержимым форм.Применяется стандартная инструкция использования WWW :: Curl .

Я выпустил 4.13, чтобы исправить эту проблему.Хороший улов!

1 голос
/ 14 августа 2010

Выезд WWW :: Mechanize . У этого есть много хороших методов формы.

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