sub ReadParse {
        local (*in) = @_ if @_;
        local ($i, $key, $val);

        ### replaced his MethGet function
        if ( $ENV{'REQUEST_METHOD'} eq "GET" ) {
           $in = $ENV{'QUERY_STRING'};
        } elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
                   read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
        } else {
                       # Added for command line debugging
                       # Supply name/value form data as a command line argument
                       # Format: name1=value1\&name2=value2\&...
                       # (need to escape & for shell)
                       # Find the first argument that's not a switch (-)
                       $in = ( grep( !/^-/, @ARGV )) [0];
                       $in =~ s/\\&/&/g;
        }

                 @in = split(/&/,$in);
   foreach $i (0 .. $#in) {
                   # Convert plus's to spaces
                   $in[$i] =~ s/\+/ /g;

                   # Split into key and value.
                   ($key, $val) = split(/=/,$in[$i],2); # splits on thefirst =.

                   # Convert %XX from hex numbers to alphanumeric
                   $key =~ s/%(..)/pack("c",hex($1))/ge;
                   $val =~ s/%(..)/pack("c",hex($1))/ge;

                   # Associate key and value. \0 is the multiple separator
                   $in{$key} .= "\0" if (defined($in{$key}));
                   $in{$key} .= $val;
                 }
                 return length($in);
}

return 1;

