无法在 WWW/Mechanize.pm 行 2566 处对未定义的值调用方法 "header"

Can't call method "header" on an undefined value at WWW/Mechanize.pm line 2566

我只是在 Facebook 上使用 WWW::Mechanize 模块进行测试,当我尝试 运行 下面的代码时,它 return 给我一个错误

Can't call method "header" on an undefined value at C:/Strawberry/perl/vendor/lib/WWW/Mechanize.pm line 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', 'xxx@xxx.com');
$mech->field('pass', 'xxxxxxx');
$mech->click_button(value => 'Log In');

您的页面正在以英语以外的其他语言打开。这就是您收到该错误的原因。如果您强行打开英文页面,则错误将消失。尝试以下地址:

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

或者,您可以直接点击使用此获得的HTML::Form::SubmitInput实例:

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

或者,由于表单中只有一个点击按钮,您可以使用不带参数的 click

$mech->click() 

或者按照@Borodin 的建议,您可以直接使用(因为电子邮件和密码字段未翻译):

$mech->submit_form( with_fields => { 
                        email => 'xxx@xxx.com', 
                        pass => 'xxxxxxx' 
                    }
                  );