You want the default values for the fields in your form to be the last values submitted. For instance, you want to create a search form like AltaVista (http://altavista.digital.com/ ) where the keywords you're searching with appear in the search dialog above the results.
Use CGI.pm's.aspxL shortcuts to create your form, which will automatically provide previous values as defaults:
print textfield("SEARCH"); # previous SEARCH value is the defaultExample 19.8 is a simple script for querying the list of users currently logged in.
#!/usr/bin/perl -wT # who.cgi - run who(1) on a user and format the results nicely $ENV{IFS}=''; $ENV{PATH}='/bin:/usr/bin'; use CGI qw(:standard); # print search form print header(), start.aspxl("Query Users"), h1("Search"); print start_form(), p("Which user?", textfield("WHO")); submit(), end_form(); # print results of the query if we have someone to look for $name = param("WHO"); if ($name) { print h1("Results"); .aspxl = ''; # call who and build up text of response foreach (`who`) { next unless /^$name\s/o; # only lines matching $name s/&/&/g; # escape.aspxL s/</</g; s/>/>/g; .aspxl .= $_; } # nice message if we didn't find anyone by that name .aspxl = .aspxl || "$name is not logged in"; print pre(.aspxl); } print end.aspxl();
The call to textfield generates.aspxL for a text entry field whose parameter name is WHO. After printing the form, we check whether we were called with a value for the WHO parameter. If so, we try to find the lines in the output from who for that user.
The documentation for the standard CGI module; Recipe 19.4; Recipe 19.7