2016-05-04 9 views
2

aufrufen Ich mache gerade eine Prüfung mit WWW::Mechanize Modul auf Facebook, wenn ich versuche, den Code unten, es gibt mir einen FehlerKann nicht Methode "Header" auf einen undefinierten Wert bei WWW/Mechanize.pm Linie 2566

Die Methode kann nicht "Header" auf einen nicht definierten Wert an C nennen: /Strawberry/perl/vendor/lib/WWW/Mechanize.pm Linie 2566.

#!/usr/bin/perl -w 
use WWW::Mechanize; 
my $mech = WWW::Mechanize->new(); 
# Connect to server 
$mech->get("https://www.facebook.com"); 
$mech->success or die $mech->response->status_line; 

# Log into server 

$mech->field('email', '[email protected]'); 
$mech->field('pass', 'xxxxxxx'); 
$mech->click_button(value => 'Log In'); 
+0

Dies funktioniert gut. Überprüfen Sie, welche Anweisung in Ihrem Code den Fehler verursacht. Was ist die Ausgabe von 'perl -MLWP -E 'sagen $ LWP :: VERSION'' und' perl -MWWW :: Mechanize -E' sagen $ WWW :: Mechanize :: VERSION''? Beachten Sie, dass Sie * immer * 'strict' verwenden und Warnungen 'all'' ganz oben in * jedem * Perl-Programm verwenden sollten, das Sie schreiben. Es hat keinen Sinn, 'my' zu verwenden, ohne' use strict' zu verwenden, und es ist kein '-w' in der Shebang-Zeile erforderlich. – Borodin

+0

$ LWP :: VERSION gib mir" Objektmethode nicht finden " "via package" 6.15 "(vielleicht hast du vergessen" 6.15 "zu laden?" und Mechanize :: VERSION ist 1.75 – Zachary

+0

Du musst eine sehr alte Version von Perl haben? – Borodin

Antwort

3

Ihre Seite öffnet sich in einer anderen Sprache als Englisch. Deshalb bekommst du diesen Fehler. Wenn Sie die Seite gewaltsam in Englisch öffnen, wird der Fehler verschwinden. Versuchen Sie unter Adresse:

$mech->get("https://en-gb.facebook.com/"); 

oder, können Sie auf direkt auf Instanz HTML::Form::SubmitInput erhalten mit dieser:

$mech->current_form()->find_input(undef, 'submit'); 

oder, da es nur einen Klick-Button in der Form ist, dass Sie click mit nicht verwenden können, Argumente.

$mech->click() 

oder wie Sie direkt von @Borodin vorgeschlagen verwenden können (wie die E-Mail und Passwort-Feld nicht übersetzt):

für mich
$mech->submit_form(with_fields => { 
         email => '[email protected]', 
         pass => 'xxxxxxx' 
        } 
       ); 
+1

* "Ihre Seite öffnet sich in so Ich andere Sprache als Englisch "* Wie diagnostizierst du das? – Borodin

+0

Ich habe diese Seite aus Indien geöffnet. Es wurde in 'Marathi' (lokale Sprache in Indien) eröffnet und ich bekam denselben Fehler wie OP. –

+0

Also, wie verursacht das * "kann nicht Methode" header "auf einen undefinierten Wert" *? – Borodin