Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Here's what I'm trying to do:

Write a script that will gather information from a web page (or rather, many web pages from one domain). The script will have to iterate through several hundred pages and run some code to get some info. However, this domain requires I log in; I have an account and several cookies stored in Mozilla that I can access, but unless I provide login information in one form or another, I can't run through this process - the domain keeps asking me to login otherwise.

If I try:
$ua->cookie_jar({ file => "$ENV{HOME}/.cookies.txt" });

among other code, I get a return of
HTTP::Response=HASH(0x83c5680), which means nothing to me.

Anyone have some thoughts?

Replies are listed 'Best First'.
Re: Cookie Jar issues
by blokhead (Monsignor) on Aug 25, 2002 at 18:19 UTC
    HTTP::Response=HASH(0x83c5680) means the return value (from whatever) is a HTTP::Response object -- that's what you want. The fact that you are getting an object of this type implies that you are on the right track. Having not seen your code, I don't think it's the cookies that are the problem.

    It looks like the problem is getting the actual data of the page back from your HTTP request. To do that, use something like this:

    # assuming you already have $ua and have given it a cookie jar... my $req = new HTTP::Request('GET', $url, $headers); my $response = $ua->request($req); # now $response is a HTTP::Response object, like the one # in your question if ($response->is_success) { print "Content-type: " . $response->headers->content_type . "\n\n" +; print $response->content; } else { print "Error!!\n"; print $response->as_string, "\n", $response->content; }
    I hope this helps. Good luck.
      Well, I didn't get a HTTP response object, but the response is still indicative of my previous attempts. My ~/.cookies.txt file wasn't created; do I need to somehow copy my existing Moz cookies into that file for the script to read from?

      As of now, I have:
      use CGI; require LWP::UserAgent; use HTTP::Request; $ua = new LWP::UserAgent; $ua->cookie_jar({ file => "$ENV{HOME}/.cookies.txt" }); $url = 'http://www.somesite.com'; my $req = new HTTP::Request('GET', $url, $headers); my $response = $ua->request($req); if ($response->is_success) { print "Content-type: " . $response->headers->content_type . "\n\n" +; print $response->content; } else { print "Error!!\n"; print $response->as_string, "\n", $response->content; }
Re: Cookie Jar issues
by BrowserUk (Patriarch) on Aug 25, 2002 at 19:19 UTC

    The HASH(0x83c5680) bit is telling you that something is trying to access a perl hash reference without dereferenceing it.

    It is pretty near impossible to attempt to diagnose the what or the why, without you supplying a little more information.

    Like where are you getting the "return" from? Is it part of an error or warning text? What code were you using, and which line(s) gave the "return"?


    What's this about a "crooked mitre"? I'm good at woodwork!