From the output I now see, I can use $reponse->code to detect the redirection.

Now, how do I proceed to the next step, which is to send that redirection, unaltered, back to the client that made the original request to my cgi script. That is, imagine my client code above being in a CGI script that submits a request to a secure site, and if I get a redirect, I have to pass it back to the client that submitted the original request to my CGI script. How do I do this? Surely it isn't as simple as:

print $cgi->redirect($response->request);

But that is what would be implied by the following from the documentation:

$r->request
$r->request( $request )
This is used to get/set the request attribute. The request attribu+te is a reference to the the request that caused this response. It do+es not have to be the same request passed to the $ua->request() metho+d, because there might have been redirects and authorization retries +in between.

If it is that simple, would any headers I may have printed before printing the redirect adversely affect how the redirect works, or do I have to ensure that nothing, not even headers, get printed before I know whether or not a redirection has occured?