• perl-cgi-form


    来源:

    http://www.cnblogs.com/itech/archive/2012/09/23/2698595.html

    http://www.cnblogs.com/itech/archive/2012/10/31/2748044.html

    一  此cgi既是提交前的form,也被用来处理form的提交

    来自:http://www.devdaily.com/perl/perl-cgi-example-scrolling-list-html-form 

    代码: (多选listbox-Multiple-choice SELECTs实例)
    不带参数时即为form:http://xxxx/cgi/perl-cgi2.cgi 
    当点击form的submit提交时,实际上相当于:http://xxxx/cgi/perl-cgi2.cgi?languages=c&languages=html,此时为对form的处理结果

     1 #!/usr/bin/perl -Tw
     2 #
     3 #  PROGRAM:    scrolling_list.cgi
     4 #
     5 #  PURPOSE:    Demonstrate (1) how to create a scrolling_list form and
     6 #        (2) how to determine the value(s) selected by the user.
     7 #
     8 #  Created by alvin alexander, devdaily.com.
     9 #
    10 
    11 #-----------------------------------#
    12 #  1. Create a new Perl CGI object  #
    13 #-----------------------------------#
    14 
    15 use CGI;
    16 $query = new CGI;
    17 
    18 
    19 #----------------------------------#
    20 #  2. Print the doctype statement  #
    21 #----------------------------------#
    22 
    23 print $query->header;
    24 
    25 
    26 #----------------------------------------------------#
    27 #  3. Start the HTML doc, and give the page a title  #
    28 #----------------------------------------------------#
    29 
    30 print $query->start_html('My scrolling_list.cgi program');
    31 
    32 
    33 #------------------------------------------------------------#
    34 #  4a.  If the program is called without any params, print   #
    35 #       the scrolling_list form.                             #
    36 #------------------------------------------------------------#
    37 
    38 if (!$query->param) {
    39 
    40     print $query->startform;
    41     print $query->h3('Select your favorite programming language(s):');
    42     print $query->scrolling_list(-name=>'languages',
    43                  -values=>[
    44                        'Basic',
    45                        'C',
    46                        'C++',
    47                        'Cobol',
    48                        'DHTML',
    49                        'Fortran',
    50                        'HTML',
    51                        'Korn Shell (Unix)',
    52                        'Perl',
    53                        'Java',
    54                        'JavaScript',
    55                        'Python',
    56                        'Ruby',
    57                        'Tcl/Tk'],
    58                  -size=>8,
    59                  -multiple=>'true',
    60                  -default=>'Perl');
    61 
    62     # Notes:
    63     # ------
    64     #    "-multiple=>'true'" lets the user make multiple selections
    65     #        from the scrolling_list
    66     #    "-default" is optional
    67     #    "-size" lets you specify the number of visible rows in the list
    68     #    can also use an optional "-labels" parameter to let the user
    69     #        see labels you want them to see, while you use
    70     #        different names for each parameter in your program
    71     
    72     print $query->br;
    73     print $query->submit(-value=>'Submit your favorite language(s)');
    74     print $query->endform;
    75 
    76 } else {
    77 
    78     #----------------------------------------------------------#
    79     #  4b.  If the program is called with parameters, retrieve #
    80     #  the 'languages' parameter, assign it to an array        #
    81     #  named $languages, then print the array with each        #
    82     #  name separated by a <BR> tag.                           #
    83     #----------------------------------------------------------#
    84 
    85     print $query->h3('Your favorite languages are:');
    86     @languages = $query->param('languages');
    87     print "<BLOCKQUOTE>
    ";
    88     foreach $language (@languages) {
    89         print "$language<BR>";
    90     }
    91     print "</BLOCKQUOTE>
    ";
    92 
    93 }
    94 
    95 #--------------------------------------------------#
    96 #  5. After either case above, end the HTML page.  #
    97 #--------------------------------------------------#
    98 print $query->end_html;

    二 也可以实现为html+perlcgi
    代码:(多选checkbox实例)

     1 #colors.html
     2 <html><head><title>favorite colors</title></head>
     3 <body>
     4 
     5 <b>Pick a Color:</b><br>
     6 
     7 <form action="colors.cgi" method="POST">
     8 <input type="checkbox" name="red" value=1> Red<br>
     9 <input type="checkbox" name="green" value=1> Green<br>
    10 <input type="checkbox" name="blue" value=1> Blue<br>
    11 <input type="checkbox" name="gold" value=1> Gold<br>
    12 <input type="submit">
    13 </form>
    14 </body>
    15 </html>
    16 
    17 #colors.cgi
    18 #!/usr/bin/perl -wT
    19 
    20 use CGI qw(:standard);
    21 use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    22 
    23 print header;
    24 print start_html;
    25 
    26 my @colors = ("red", "green", "blue", "gold");
    27 foreach my $color (@colors) {
    28    if (param($color)) {
    29       print "You picked $color.<br>
    ";
    30    }
    31 }
    32 
    33 print end_html;

    其他实例radiobox

     1 #radiobox.html
     2 <html><head><title>Pick a Color</title></head>
     3 <body>
     4 <b>Pick a Color:</b><br>
     5 
     6 <form action="radiobox.cgi" method="POST">
     7 <input type="radio" name="color" value="red"> Red<br>
     8 <input type="radio" name="color" value="green"> Green<br>
     9 <input type="radio" name="color" value="blue"> Blue<br>
    10 <input type="radio" name="color" value="gold"> Gold<br>
    11 <input type="submit">
    12 </form>
    13 </body></html>
    14 
    15 #radiobox.cgi
    16 #!/usr/bin/perl -wT
    17 use strict;
    18 use CGI qw(:standard);
    19 use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    20 
    21 my %colors = (  red     => "#ff0000",
    22                 green   => "#00ff00",
    23                 blue    => "#0000ff",
    24                 gold    => "#cccc00");
    25 
    26 print header;
    27 my $color = param('color');
    28 
    29 # do some validation - be sure they picked a valid color
    30 if (exists $colors{$color}) {
    31    print start_html(-title=>"Results", -bgcolor=>$color);
    32    print "You picked $color.<br>
    ";
    33 } else {
    34    print start_html(-title=>"Results");
    35    print "You didn't pick a color! (You picked '$color')";
    36 }
    37 print end_html;

    三 cgi实例2

     1 #!/usr/bin/perl  
     2  use strict;
     3  use warnings;
     4  use CGI;
     5  use CGI::Carp qw(fatalsToBrowser);
     6  
     7  sub output_top($);
     8  sub output_end($);
     9  sub display_results($);
    10  sub output_form($);
    11  
    12  my $q = new CGI;
    13  
    14  print $q->header();
    15  
    16  # Output stylesheet, heading etc
    17  output_top($q);
    18  
    19  if ($q->param()) {
    20      # Parameters are defined, therefore the form has been submitted
    21      display_results($q);
    22  } else {
    23      # We're here for the first time, display the form
    24      output_form($q);
    25  }
    26  
    27  # Output footer and end html
    28  output_end($q);
    29  
    30  exit 0;
    31  
    32  # Outputs the start html tag, stylesheet and heading
    33  sub output_top($) {
    34      my ($q) = @_;
    35      print $q->start_html(
    36          -title => 'A Questionaire',
    37          -bgcolor => 'white',
    38  }
    39  
    40  # Outputs a footer line and end html tags
    41  sub output_end($) {
    42      my ($q) = @_;
    43      print $q->div("My Web Form");
    44      print $q->end_html;
    45  }
    46  
    47  # Displays the results of the form
    48  sub display_results($) {
    49      my ($q) = @_;
    50  
    51      my $username = $q->param('user_name');
    52      print $username;
    53      print $q->br;
    54  
    55  # Outputs a web form
    56  sub output_form($) {
    57      my ($q) = @_;
    58      print $q->start_form(
    59          -name => 'main',
    60          -method => 'POST',
    61      );
    62  
    63      print $q->start_table;
    64      print $q->Tr(
    65        $q->td('Name:'),
    66        $q->td(
    67          $q->textfield(-name => "user_name", -size => 50)
    68        )
    69      );
    70  
    71      print $q->Tr(
    72        $q->td($q->submit(-value => 'Submit')),
    73        $q->td('&nbsp;')
    74      );
    75      print $q->end_table;
    76      print $q->end_form;
    77  }

    更多实例
    http://www.cgi101.com/book/ch5/text.html 
    http://www.comp.leeds.ac.uk/Perl/Cgi/forms.html 
     

    四 cgi实例3

     1 #!/usr/local/bin/perl
     2         use CGI ':standard';
     3 
     4         print header;
     5         print start_html("Example CGI.pm Form");
     6         print "<h1> Example CGI.pm Form</h1>
    ";
     7         print_prompt();
     8         do_work();
     9         print_tail();
    10         print end_html;
    11 
    12         sub print_prompt {
    13            print start_form;
    14            print "<em>What's your name?</em><br>";
    15            print textfield('name');
    16            print checkbox('Not my real name');
    17 
    18            print "<p><em>Where can you find English Sparrows?</em><br>";
    19            print checkbox_group(
    20                                  -name=>'Sparrow locations',
    21                                  -values=>[England,France,Spain,Asia,Hoboken],
    22                                  -linebreak=>'yes',
    23                                  -defaults=>[England,Asia]);
    24 
    25            print "<p><em>How far can they fly?</em><br>",
    26                 radio_group(
    27                         -name=>'how far',
    28                         -values=>['10 ft','1 mile','10 miles','real far'],
    29                         -default=>'1 mile');
    30 
    31            print "<p><em>What's your favorite color?</em>  ";
    32            print popup_menu(-name=>'Color',
    33                                     -values=>['black','brown','red','yellow'],
    34                                     -default=>'red');
    35 
    36            print hidden('Reference','Monty Python and the Holy Grail');
    37 
    38            print "<p><em>What have you got there?</em><br>";
    39            print scrolling_list(
    40                          -name=>'possessions',
    41                          -values=>['A Coconut','A Grail','An Icon',
    42                                    'A Sword','A Ticket'],
    43                          -size=>5,
    44                          -multiple=>'true');
    45 
    46            print "<p><em>Any parting comments?</em><br>";
    47            print textarea(-name=>'Comments',
    48                                   -rows=>10,
    49                                   -columns=>50);
    50 
    51            print "<p>",reset;
    52            print submit('Action','Shout');
    53            print submit('Action','Scream');
    54            print end_form;
    55            print "<hr>
    ";
    56         }
    57 
    58         sub do_work {
    59 
    60            print "<h2>Here are the current settings in this form</h2>";
    61 
    62            for my $key (param) {
    63               print "<strong>$key</strong> -> ";
    64               my @values = param($key);
    65               print join(", ",@values),"<br>
    ";
    66           }
    67         }
    68 
    69         sub print_tail {
    70            print <<END;
    71         <hr>
    72         <address>Lincoln D. Stein</address><br>
    73         <a href="/">Home Page</a>
    74         END
    75         }

    具体的更多的form(checkbox,check_group,radio_group,popup_menu,hidden,scrolling_list,textarea.......), 在manpage search:  http://search.cpan.org/~markstos/CGI.pm-3.60/lib/CGI.pm

  • 相关阅读:
    nyoj 311 完全背包
    nyoj 737 石子合并(一)
    nyoj 232 How to eat more Banana
    nyoj 456 邮票分你一半
    nyoj 236 心急的C小加
    nyoj 195 飞翔
    nyoj 201 作业题
    SOS 调试扩展 (SOS.dll)
    使用Windbg和SoS扩展调试分析.NET程序
    windbg命令分类与概述
  • 原文地址:https://www.cnblogs.com/spriteflk/p/5735999.html
Copyright © 2020-2023  润新知