Bruce: Thanks a lot! Do I understand correctly, then, in assuming that I can make a script do: print "Location: www.domain.com/cgi-bin/next.cgi? this=that&foo=fee\n\n" and, unless I had done the 'print "Content-type: text/html\n\n"' thing, it'll just call the other script and pass it that info? Would that info get to the other script as $ENV{'QUERY_STRING'} as well? What if I passed it a path info ie: "this/path/to/thisfile.txt\n\n" , where would it be? Is there a $ENV{ ? } for this? Thank you again! Riccardo -- mailto:perotti@pobox.com > From: Bruce Van Allen <bva@cruzio.com> > Reply-To: Bruce Van Allen <bva@cruzio.com> > Date: Sun, 25 Jun 2000 22:48:18 -0700 > To: Riccardo Perotti <perotti@pobox.com>, "macperl-webcgi@macperl.org List" > <macperl-webcgi@macperl.org> > Subject: Re: [MacPerl-WebCGI] Can a cgi script call an URL? > > At 10:57 PM 6/25/00, Riccardo Perotti wrote: >> Hi all: >> >> I saw it in some script: >> >> Print "Location: www.domain.com/hatever.html" >> >> Is this script telling the browser to "go there"? or is it just "printing" >> the URL into the browser's Location (the user needing to press enter of 'go' >> or whatever in his bowser)? > > "Go there." And, yes to your previous question. If a CGI script named > www.domain.com/path/a.cgi executes the statement > > print "Location: www.domain.com/another/path/b.cgi\n\n"; > > then what goes to the user's browser will be the output of b.cgi > > assuming b.cgi exists, etc. The first can pass query strings and path > info to the second, too: > > print "Location: www.domain.com/another/path/b.cgi?id=xyz123\n\n"; > > print "Location: www.domain.com/another/path/b.cgi/morepath/datafile.txt\n\n"; > > But: > a. the Perl function 'print' is all lower case. > > b. "Location: [URL]" is an http header, so it must have a blank line > immediately following, hence the two 'newlines' (\n\n but see *). > > c. If your script has already executed > > print "Content-type: text/html\n\n" > > in preparation for sending some HTML back to the user, then print > "Location: ... " won't work, or rather, you'll get "Location: ..." > printed out somewhere on screen, and it won't be a link either. > > > * Here's a potentially confusing diversion NOT relevant to your > question about print "Location: ...", but since I used "\n\n" above, > there's bound to be an objection: > > Be careful: in Perl \n stands for whatever the local 'newline' is for > the OS it's operating under, which means that in MAC OS it's really > \r or \015 (Carriage Return), in UNIXish it's really \n or \012 (Line > Feed), and in DOS/Win it's really \n\r or \015\012 (CRLF). Most of > the time, Perl hides this problem from you, and it's safe to use > "\n\n". Crossing platforms takes a little more care, such as when > counting characters, or processing <TEXTAREA> input in which the user > has hit Return. If you really want to cover all eventualities, then > filter your input like this: > > $line =~ s/\015\012?|\012/\n/g; > > HTH > > 1; > > > -- > > - Bruce > > __Bruce_Van_Allen___bva@cruzio.com__Santa_Cruz_CA__ > > ==== Want to unsubscribe from this list? > ==== Send mail with body "unsubscribe" to macperl-webcgi-request@macperl.org ==== Want to unsubscribe from this list? ==== Send mail with body "unsubscribe" to macperl-webcgi-request@macperl.org