2010-08-13 6 views
1

Je veux utiliser script suivant:Curl Perl ne fonctionne pas, la méthode formadd manquante

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(); 

erreur suivante est lancée:

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

POURQUOI ??? Le module WWW :: Curl est installé correctement, j'ai utilisé le paquet libwww-curl-perl sous Debian/Ubuntu.

Quelqu'un peut-il m'aider s'il vous plaît?

+0

* -> nouveau au lieu de nouveau * ne fonctionne pas, aussi. – Vincent

Répondre

4

Oups.

On dirait this commit a éclaté formadd. Le sous-système XS ne correspond pas à la déclaration PREFIX = curl_form_ (comme son nom est curl_formadd), donc perl ne sait pas comment mapper la version Perl de la méthode à XS.

4.12 était la première version qui a essayé de prendre en charge WWW::Curl::Form, il semble que cela n'a pas fonctionné après tout. Je ne sais pas comment j'ai raté celui-ci. Je devrais probablement noter ici que le support WWW::Curl::Form n'était pas exactement un élément TODO de haute priorité sur ma liste, en raison de l'existence de divers modules de gestion de formulaire de haute qualité sur CPAN. J'ai seulement accepté le patch pour le bien de l'intégralité des fonctionnalités. Nous vous encourageons à utiliser ces modules pour gérer le contenu des formulaires. La norme WWW :: Curl use case statement s'applique.

J'ai publié 4.13 pour résoudre ce problème. Bonne prise!

Questions connexes