Actually, no.
Sorry, but that doesn't work. I've just tried the following script:
#!/usr/bin/perl use warnings; use strict; print "Location:http://www.perlmonks.org/\n\n";
And it failed - no redirection, just the string "Location:http://www.perlmonks.org/\n\n" in my browser.
The reason it failed on my machine is because (IIRC) Apache looked at the first few lines of output of the script, didn't see a header, and so added the header itself (specifying plain text) before sending the output of the script.
You can make yours work by adding the line
print "HTTP/1.1 302 Moved\n";
above the existing print() line.
I've also just tried the following:
Which outputs:#!/usr/bin/perl use warnings; use strict; use CGI; my $q = new CGI; print $q->redirect( -uri => 'http://www.perlmonks.org/' );
When called on the command line.Status: 302 Moved location: http://www.perlmonks.org/
When called by the webserver, it outputs a valid, correct, and working header that redirects the client.
I'm not completely against printing the headers yourself for such a simple task, but I am against printing headers wrongly. Using the CGI module saves you from having to read the RFCs to find out why your script didn't work, and will save time: it took about 5 seconds to produce the CGI.pm method, and closer to 5 minutes for me to make your version work1
When there's a monastery full of monks suggesting 'use CGI;', perhaps they're onto something
Please Note:
This isn't intended to be a telling-off: I did honestly want to see if your version worked.
Cheers.
Update: After an interesting ChatterBox discussion with true, and some playing around with webserver configs, I've come to the following conclusion (for apache):
true's solution works, if:
The CGI.pm solution works whatever because it checks to see if modperl's running, and whether the header's been sent.
References: the modperl guide, and Writing Apache Modules with Perl and C.
In reply to Re: Re: Calling a cgi with another cgi
by davis
in thread Calling a cgi with another cgi
by Donnie
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |