X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlfaq9.pod;h=609f8984851bdb5c16f88091d9687ce846b83593;hb=42e1efa1e62f0d241a2d8e4847bce98f732060a3;hp=e3488e5f5cc1fd31a09d247fc708f28d33b8baa8;hpb=a93751fa40b15f424f91bba70d1533c6b4024e42;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlfaq9.pod b/pod/perlfaq9.pod index e3488e5..609f898 100644 --- a/pod/perlfaq9.pod +++ b/pod/perlfaq9.pod @@ -1,6 +1,6 @@ =head1 NAME -perlfaq9 - Networking ($Revision: 1.4 $, $Date: 2001/10/31 23:54:56 $) +perlfaq9 - Networking ($Revision: 8539 $) =head1 DESCRIPTION @@ -11,20 +11,19 @@ and a few on the web. (Alan Flavell answers...) -The Common Gateway Interface (CGI) specifies a software interface between -a program ("CGI script") and a web server (HTTPD). It is not specific -to Perl, and has its own FAQs and tutorials, and usenet group, -comp.infosystems.www.authoring.cgi +The Common Gateway Interface (CGI) specifies a software interface between +a program ("CGI script") and a web server (HTTPD). It is not specific +to Perl, and has its own FAQs and tutorials, and usenet group, +comp.infosystems.www.authoring.cgi -The original CGI specification is at: http://hoohoo.ncsa.uiuc.edu/cgi/ - -Current best-practice RFC draft at: http://CGI-Spec.Golux.Com/ +The CGI specification is outlined in an informational RFC: +http://www.ietf.org/rfc/rfc3875 Other relevant documentation listed in: http://www.perl.org/CGI_MetaFAQ.html -These Perl FAQs very selectively cover some CGI issues. However, Perl +These Perl FAQs very selectively cover some CGI issues. However, Perl programmers are strongly advised to use the CGI.pm module, to take care -of the details for them. +of the details for them. The similarity between CGI response headers (defined in the CGI specification) and HTTP response headers (defined in the HTTP @@ -48,7 +47,12 @@ systems. CGI.pm selects an appropriate newline representation =head2 My CGI script runs from the command line but not the browser. (500 Server Error) -If you can demonstrate that you've read the FAQs and that +Several things could be wrong. You can go through the "Troubleshooting +Perl CGI scripts" guide at + + http://www.perl.org/troubleshooting_CGI.html + +If, after that, you can demonstrate that you've read the FAQs and that your problem isn't something simple that can be easily answered, you'll probably receive a courteous and useful reply to your question if you post it on comp.infosystems.www.authoring.cgi (if it's something to do @@ -56,7 +60,7 @@ with HTTP or the CGI protocols). Questions that appear to be Perl questions but are really CGI ones that are posted to comp.lang.perl.misc are not so well received. -The useful FAQs, related documents, and troubleshooting guides are +The useful FAQs, related documents, and troubleshooting guides are listed in the CGI Meta FAQ: http://www.perl.org/CGI_MetaFAQ.html @@ -145,17 +149,19 @@ on text like this: You can easily extract all sorts of URLs from HTML with C which handles anchors, images, objects, -frames, and many other tags that can contain a URL. If you need -anything more complex, you can create your own subclass of -C or C. You might even use +frames, and many other tags that can contain a URL. If you need +anything more complex, you can create your own subclass of +C or C. You might even use C as an example for something specifically suited to your needs. -Less complete solutions involving regular expressions can save +You can use URI::Find to extract URLs from an arbitrary text document. + +Less complete solutions involving regular expressions can save you a lot of processing time if you know that the input is simple. One solution from Tom Christiansen runs 100 times faster than most module based approaches but only extracts URLs from anchors where the first -attribute is HREF and there are no other attributes. +attribute is HREF and there are no other attributes. #!/usr/bin/perl -n00 # qxurl - tchrist@perl.com @@ -168,16 +174,41 @@ attribute is HREF and there are no other attributes. =head2 How do I download a file from the user's machine? How do I open a file on another machine? -In the context of an HTML form, you can use what's known as -B encoding. The CGI.pm module (available from -CPAN) supports this in the start_multipart_form() method, which isn't -the same as the startform() method. +In this case, download means to use the file upload feature of HTML +forms. You allow the web surfer to specify a file to send to your web +server. To you it looks like a download, and to the user it looks +like an upload. No matter what you call it, you do it with what's +known as B encoding. The CGI.pm module (which +comes with Perl as part of the Standard Library) supports this in the +start_multipart_form() method, which isn't the same as the startform() +method. + +See the section in the CGI.pm documentation on file uploads for code +examples and details. + +=head2 How do I make an HTML pop-up menu with Perl? -=head2 How do I make a pop-up menu in HTML? +(contributed by brian d foy) + +The CGI.pm module (which comes with Perl) has functions to create +the HTML form widgets. See the CGI.pm documentation for more +examples. + + use CGI qw/:standard/; + print header, + start_html('Favorite Animals'), + + start_form, + "What's your favorite animal? ", + popup_menu( + -name => 'animal', + -values => [ qw( Llama Alpaca Camel Ram ) ] + ), + submit, + + end_form, + end_html; -Use the B<<