in reply to Using CGI.pm

Yes, IMHO CGI.pm is the best way to process forms - it was written by Lincoln Stein (http://stein.cshl.org/~lstein/), has been around for a long time so is very mature, and as Dean said it's been included in the standard perl distribution since perl version 5.004. I'm guessing since you refer to WS_ftp that you are on a Windows machine - I can't be much help there. If you can get to a command prompt, you should be able to do
perldoc CGI
to read the excellent documentation included with the CGI.pm module. The CGI scripts you write will need to exist on the webserver machine which is where they will run.

Just so you know, the CGI.pm module can be used for much more than just processing forms - it provides shortcuts for printing out your entire HTML page. I prefer to use it for just processing forms data myself - I like to code my own HTML because I feel too removed from the HTML if I use CGI.pm's shortcuts HTH.

Replies are listed 'Best First'.
2Re: Using CGI.pm
by jeffa (Bishop) on Nov 18, 2003 at 15:56 UTC
    I like to use HTML::Template or Template to "generate" HTML from Perl, but CGI.pm is really good at creating form fields as well. Here is an example of creating a select box of the months with the current month selected:
    use strict; use warnings; use Time::Piece; use CGI qw(popup_menu); my $time = localtime; my @month = $time->mon_list; print popup_menu( -name => 'month', -values => [0..11], -default => $time->_mon, -labels => { map {($_ => $month[$_])} 0..11 }, );

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)
    

      Using HTML::Template to do this isn't too extreme, though it is definitely not as pretty-looking as CGI.pm's html-generating methods. Chances are I'd still go the templating route, just because I'm now very used to doing so.

      #!c:/perl/bin/perl -w $|++; use strict; use CGI::Simple; use HTML::Template; my $cur_month = 'November'; my $count = 0; my $months = [ map { [ $count++, $_ ] } qw( January February March April May Jun July August September October November December ) ]; my $q = CGI::Simple->new; my $t = HTML::Template->new(filehandle => *DATA); $t->param( url => $q->self_url, months => [ map { { month_num => $_->[0], month_name => $_->[1], selected => ($cur_month eq $_->[1] ? 'SELECTED' : '') } } @$months ] ); print $q->header, $t->output; exit; __DATA__ <html> <head> <title>test</title> </head> <body> <form action="<TMPL_VAR NAME="url" ESCAPE="HTML">"> <select name="month"> <TMPL_LOOP NAME="months"> <option value="<TMPL_VAR NAME="month_num" ESCAPE="HTML">" <TMPL_VAR NAME="selected" ESCAPE="HTML"> ><TMPL_VAR NAME="month_name" ESCAPE="HTML"></option> </TMPL_LOOP> </select> <input type="submit" value="Continue" /> </form> </body> </html>