in reply to Data::Dumper and Cookies

Data::Dumper is a good tool to visualise complex data structures, not to access them. In this case, you could access the JSESSIONID directly (since domain and path seem to be constant):

print $jar->{COOKIES}{'example.com'}{'/'}{'JSESSIONID'}[1], "\n";

But there is a better way. Since $mech->cookies() returns an HTTP::Cookies object, you should use its methods to access the cookie. The scan() method should accomplish what you want.

# ... as before, set $jar = ... sub callback { # 0 version # 1 key # 2 val # 3 path # 4 domain # 5 port # 6 path_spec # 7 secure # 8 expires # 9 discard # 10 hash #-- add more comparisons to narrow the search result print "Cookie: $_[2]\n" if $_[2] =~ /^8430/; } $jar->scan( \&callback );

See also perldsc, HTTP::Cookies, and maybe Data::Diver.

Replies are listed 'Best First'.
Re^2: Data::Dumper and Cookies
by locked_user sundialsvc4 (Abbot) on Jul 08, 2013 at 19:48 UTC

    That’s a key point.   (Up-voted!)   When the perldoc's tell you that a particular call returns an object, then that’s what you should work from:   treat it as an object, ask it questions, and dump the answers.   If you simply dump the object, it’s kinda like looking at an X-ray picture:   “yeah, that’s what the guts of the thing look like (ugh!), but that’s not really what I want to know.”   (You’d have to understand the deep-guts of the thing to understand what you are looking at, and who wants to stick their hands in guts when the thing is alive and can answer questions?)   Instead, call its methods, and dump what they tell you:

    print STDERR Data::Dumper->Dump( [ $myobject->foo(), $myobject->bar(), $myobject->bletch() ], [ 'foo says', 'bar says', 'bletch says' ] );

Re^2: Data::Dumper and Cookies
by PerlSufi (Friar) on Jul 08, 2013 at 19:45 UTC