in reply to WWW::Mechanize follow meta refreshes
I've used a regex as my refresh template is fixed and very, very simple. However, if yours isn't/aren't then you should replace the regex with a call to something like HTML::TokeParser.
This is actually built into WWW::Mechanize (well, LWP...) for you, so you can do something like:-
if ($mech->response and my $refresh = $mech->response->header('Refresh
my($delay, $uri) = split /;url=/i, $refresh;
$uri ||= $mech->uri; # No URL; reload current URL.
$delay should probably be validated to protect against malformed META refresh tags, and there's a whole other headache about potential loops if you hack WWW::Mechanize to follow refreshes automatically.