#! /usr/lcl/bin/perl use DBI; use CGI; use CGI::Carp qw(fatalsToBrowser carpout); #use strict; print "Content-type: text/html\n\n"; # declare message type #Run the program _main(); # Subroutine parse_form_data decodes the form information. # A reference to a variable named request_form is passed to it. # Request_form is treated as an associate array and filled with # key-value pairs sent by the browser. # Parameters are used if the requestor requires a signature and the # form needs to be resubmitted. All cgi parameters are lowercase, # all $in params are camelcase sub _main { &parse_form_data (*in); # call parse_form_data function my $cgi = new CGI(); $in{'User_First'} =~ s/([\w']+)/\u\L$1/g; $in{'User_Last'} =~ s/([\w']+)/\u\L$1/g; _forminfo(); } #end _main() sub parse_form_data { local (*FORM_DATA) = @_; local ($query_string, @key_value_pairs, $key_value, $key, $value); read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'}); @key_value_pairs = split(/&/, $query_string); foreach $key_value (@key_value_pairs) { ($key, $value) = split(/=/, $key_value); # break up/store param and value $value =~ tr/+/ /; # convert pluses to spaces $value =~ s/%([\da-fA-F][\da-fA-F])/pack("C", hex($1))/eg; # decode uri encoding if (defined($FORM_DATA{$key})) { $FORM_DATA{$key} = join (", ", $FORM_DATA{$key}, $value); } else { $FORM_DATA{$key} = $value; } } } # end parse_form_data() sub _forminfo { ... }