Неопределенная ошибка подпрограммы с использованием WWW :: Curl :: Form в Perl - PullRequest
0 голосов
/ 10 января 2011

У меня есть ошибка в моем скрипте, но, похоже, все в порядке:

Неопределенная подпрограмма и WWW :: Curl :: Form :: curl_formaddfile, заключенные в строку /home/script.pm 107

строки вокруг 107 строк выглядят так:

my $curlf = WWW::Curl::Form->new;

$curlf->curl_formaddfile($nfo, 'nfo', "multipart/form-data"); #107 line
$curlf->curl_formaddfile($torrent, 'file', "multipart/form-data");
$curlf->curl_formadd("name", $name);
$curlf->curl_formadd("type", $category);
$curlf->curl_formadd("descr", $$descr_txt);
$curlf->curl_formadd("anonymous", "1");
$curlf->curl_formadd("samehash", "1");

my $curl = new WWW::Curl::Easy;
my $response_details;
# windows check
if($os eq "windows"){
    $curl->setopt(CURLOPT_WRITEFUNCTION, \&curl_write_data); 
}else{
    open (my $response_details_raw, ">", \$response_details);
    $curl->setopt(CURLOPT_WRITEDATA,$response_details_raw);
}
my @curl_headers=('Expect:');
$curl->setopt(CURLOPT_HTTPHEADER, \@curl_headers);
$curl->setopt(CURLOPT_FOLLOWLOCATION, 1);
$curl->setopt(CURLOPT_RETURNTRANSFER, 1);
$curl->setopt(CURLOPT_SSL_VERIFYPEER, 1);
$curl->setopt(CURLOPT_SSL_VERIFYHOST, 1);
$curl->setopt(CURLOPT_TIMEOUT, 60);
$curl->setopt(CURLOPT_VERBOSE, 0);
$curl->setopt(CURLOPT_COOKIE, $cookie_glabella);
$curl->setopt(CURLOPT_REFERER, $upload_referer);
$curl->setopt(CURLOPT_HTTPPOST, $curlf);

$ nfo распечатывается как /home/file.nfo

после этого идет WWW :: Curl :: Easy, и он не работает, так как не может POST из этих данных. В чем может быть проблема?

1 Ответ

1 голос
/ 10 января 2011

Для doc метод curl_formaddfile указан в разделе Compatibility (Seems to be working.). Возможно, у вас есть более новый модуль, поэтому вы должны использовать метод formaddfile вместо

См. Ниже пример из документа:

    use WWW::Curl::Form;
    my $curlf = WWW::Curl::Form->new;
    $curlf->formaddfile($filename, 'attachment', "multipart/form-data");
    $curlf->formadd("FIELDNAME", "VALUE");

    $curl->setopt(CURLOPT_HTTPPOST, $curlf);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...