in reply to Referer and HEAD using WWW::Mechanize

I ran your code and there was no indication in the output that any errors occurred.

200 200 Back 1 OK 200 Back 2 OK 200 Back 1 OK 200 Back 2 OK

I improved your test so we can actually see the problem:

#!perl use strict; use warnings; use WWW::Mechanize qw( ); my $mech = WWW::Mechanize->new(); #$mech->proxy(['http', 'ftp'], 'http://localhost:8080/'); my $url = 'http://www.vitoco.cl/test-ref'; #my $url = 'http://www.vitoco.cl/test-ref/index2.html'; $mech->get($url)->is_success() or die; @ARGV or die; for my $img ($mech->images) { if ($ARGV[0]) { $mech->head($img->url_abs())->is_success() or die; $mech->back() or die; } my $response = $mech->get($img->url_abs()); print($mech->status(), "\n"); print( ( $response->redirects() )[0]->request()->referer(), "\n"); $mech->back() or die; print("\n"); }
$ perl a.pl 0 200 http://www.vitoco.cl/test-ref 200 http://www.vitoco.cl/test-ref $ perl a.pl 1 200 http://www.vitoco.cl/test-ref/img1 200 http://www.vitoco.cl/test-ref/img1

When I upgraded WWW::Mechanize, the back returned false after a head.

$ perl a.pl 0 200 http://www.vitoco.cl/test-ref 200 http://www.vitoco.cl/test-ref $ perl a.pl 1 Died at a.pl line 22.

So yes, WWW::Mechanize is buggy.

if ( $request->method eq 'GET' || $request->method eq 'POST' ) { $self->_push_page_stack(); }

should be changed to

$self->_push_page_stack();

Please file a bug report.

Replies are listed 'Best First'.
Re^2: Referer and HEAD using WWW::Mechanize
by vitoco (Hermit) on Aug 14, 2009 at 20:10 UTC
    Please file a bug report.

    Done!