Perl 为什么不';t我从LWP::UserAgent->;获取定义的值;新的()?

Perl 为什么不';t我从LWP::UserAgent->;获取定义的值;新的()?,perl,lwp-useragent,Perl,Lwp Useragent,我在使用cookie\u jar方法时遇到此错误: Can't call method cookie_jar on an undefined value 这是我的密码: my $cookie_jar= new HTTP::Cookies; my $ua=new LWP::UserAgent; my %cookies= fetch CGI::Cookie; my $encoded=$cookies{'SCred'}; $cookie_jar->set_cookie(1, "SCred",

我在使用cookie\u jar方法时遇到此错误:

Can't call method cookie_jar on an undefined value
这是我的密码:

my $cookie_jar= new HTTP::Cookies;
my $ua=new LWP::UserAgent;
my %cookies= fetch CGI::Cookie;
my $encoded=$cookies{'SCred'};
$cookie_jar->set_cookie(1, "SCred", $encoded, "/", $SSO_DOMAIN,  "", 0, 0, 60*60, 0);
$ua->cookie_jar($cookie_jar); # I get error on this line

知道我为什么会出现这个错误吗?

为了排除任何奇怪的交互,请尝试以下操作:

my $cookie_jar = HTTP::Cookies->new;
my $ua = LWP::UserAgent->new;
my %cookies = CGI::Cookie->fetch;
my $encoded = $cookies{'SCred'};
$cookie_jar->set_cookie(
    1, "SCred", $encoded, "/", $SSO_DOMAIN,  "", 0, 0, 60*60, 0
);
$ua->cookie_jar($cookie_jar); # I get error on this line
现在,由于某种原因,
$ua
未定义,这意味着构造函数调用:

my $ua = LWP::UserAgent->new;
失败了。我不太熟悉
fastcgi
。然而,
LWP::UserAgent
在构造函数中出现任何故障时都会发出嘎嘎声:我不确定您是如何到达所讨论的线路的

你检查过服务器日志了吗?黑暗中的总镜头:以下内容是否向错误日志中添加了任何有用的信息

my $ua = eval { LWP::UserAgent->new }
    or warn "LWP::UserAgent->new failed: $@";
我已经尝试过你的代码(带有严格的警告和我认为是必需的模块,将自由变量转换为字符串):


它是有效的。您可能想发布一个更完整的示例,或者在“$ua=new…”和“$ua->cookie\u jar”行之间是否有行,其中$ua被重新分配或设置为未定义?如果在调用cookie\u jar之前打印“$ua”的值,您应该会看到它是未定义的,它必须在第一次赋值和调用该方法之间的某个位置重置。

如果这是您得到的实际错误,cookie\u jar就没有问题。这恰好是您尝试调用的第一个方法。检查在创建用户代理时是否确实获得了对象

删除所有cookie内容,然后尝试
代理
方法:

use strict;
my $ua = eval { LWP::UserAgent->new }
    or die "Could not make user-agent! $@";
$ua->agent("TestAgent");

如果构造函数中出现任何错误,您应该能够捕获它。然而,如果你的剧本还没有死掉,我想你还出了点别的错。如果LWP::UserAgent::new遇到问题,它就会发出嘎嘎声。它唯一能返回的是它已经调用方法的定义值。

如果不使用间接对象表示法,是否仍有问题?i、 e.
LWP::UserAgent->new
而不是
new LWP::UserAgent
Yes。即使使用了间接对象标记,我仍然有这个问题。您可以发布一个完整的脚本,它与完整的输出一起失败吗?
use strict;
my $ua = eval { LWP::UserAgent->new }
    or die "Could not make user-agent! $@";
$ua->agent("TestAgent");