为什么我没有从LWP :: UserAgent-> new()获得定义的值?

0 perl lwp-useragent

我在使用cookie_jar方法时遇到此错误:

Can't call method cookie_jar on an undefined value
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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
Run Code Online (Sandbox Code Playgroud)

知道为什么我会收到这个错误吗?

Kyl*_*ton 6

我已经尝试过你的代码(严格,警告以及我认为所需的模块,将自由变量转换为字符串):

kyle@indigo64 ~[home*]$ cat x.pl
use strict;
use warnings;
use HTTP::Cookies;
use LWP::UserAgent;
use CGI::Cookie;

my $ua         = new LWP::UserAgent;
my %cookies    = fetch CGI::Cookie;
my $encoded    = $cookies{'SCred'};

my $cookie_jar = new HTTP::Cookies;
$cookie_jar->set_cookie(
  1, "SCred", '$encoded',
  "/", '$SSO_DOMAIN',  "",
  0, 0, 60*60, 0
);
$ua->cookie_jar($cookie_jar);

print "ua: ",$ua,"\n";
print "ua->cookie_jar: ",$ua->cookie_jar,"\n";
mortis@indigo64 ~[home*]$ perl x.pl
ua: LWP::UserAgent=HASH(0x82f8cc8)
ua->cookie_jar: HTTP::Cookies=HASH(0x82f8b84)
kyle@indigo64 ~[home*]$ 
Run Code Online (Sandbox Code Playgroud)

它的工作原理.您可能想要发布一个更全面的示例,或者在'$ ua = new ...'和'$ ua-> cookie_jar'行之间是否有行,其中$ ua被重新分配或以其他方式设置为undef?如果在调用cookie_jar之前打印'$ ua'的值,您应该看到它是undef,它必须在第一次赋值和调用该方法的位置之间重置.