#!/usr/bin/tclsh # TCL script to display all user-defined values # from a form proc urlDecode {text} { # Replace `+' chars, then hexidecimals regsub -all {\+} $text { } text regsub -all {%([0-9a-hA-H][0-9a-hA-H])} \ $text {[format %c 0x\1]} url # Send back the result return [subst $url] } proc cgiParse {} { global cgi env # Find out what type of request it was, and get # the data if {[info exists env(QUERY_STRING)]} { set text $env(QUERY_STRING) } elseif {[info exists env(CONTENT_LENGTH)]} { set text [read stdin $env(CONTENT_LENGTH)] } else { gets stdin text } # Decode the data foreach {name value} [split $text &=] { set cgi([urlDecode $name]) \ [urlDecode $value] } } # Print a header and run puts "Content-type: text/html \n\n" cgiParse foreach foo [array names cgi] { puts "Variable: $foo Value: $cgi($foo) <br> }