Ну, вы должны иметь несколько файлов cookie в банке для файлов cookie, чтобы увидеть любые файлы cookie в выходных данных. Пока у вас есть пустая банка с печеньем. Либо убедитесь, что вы добавили несколько файлов cookie, либо чтобы сайт, к которому вы обращаетесь, устанавливал их:
use HTTP::Cookies;
use WWW::Mechanize;
my $cookie_jar = HTTP::Cookies->new;
my $agent = WWW::Mechanize->new( cookie_jar => $cookie_jar );
$cookie_jar->set_cookie(
qw(
3
cat
buster
/
.example.com
0
0
0
)
);
$agent->get( 'http://www.amazon.com' );
print "Set Cookie Jar?\n", $agent->cookie_jar->as_string, "\n";
Это дало мне вывод:
Set Cookie Jar?
Set-Cookie3: session-id=000-0000000-0000000; path="/"; domain=.amazon.com; path_spec; discard; version=0
Set-Cookie3: session-id-time=1272524400l; path="/"; domain=.amazon.com; path_spec; discard; version=0 Set-Cookie3: cat=buster; path="/"; domain=.example.com; port=0; version=3
Однако вам не нужно вызывать HTTP::Cookies
напрямую. LWP
позаботится об этом. Вы просто даете cookie_jar
ссылку на хеш:
my $agent = WWW::Mechanize->new( cookie_jar => {} );
Если вы просто хотите, чтобы файлы cookie использовались в конкретном ответе, вы можете создать отдельный файл cookie, в котором будут храниться те файлы, которые вы извлекли из ответа:
use WWW::Mechanize;
my $agent = WWW::Mechanize->new( cookie_jar => {} );
my $response = $agent->get( 'http://www.amazon.com' );
my $cookie_jar = HTTP::Cookies->new;
$cookie_jar->extract_cookies( $response );
print $cookie_jar->as_string;