agent,
When you say you wrote your own web server, what exactly did you code? For CGI, you need to capture this info:VARIABLE_NAME Value
DOCUMENT_ROOT The root directory of your server
HTTP_COOKIE The visitor's cookie, if one is set
HTTP_HOST The hostname of your server
HTTP_REFERER The URL of the page that called your script
HTTP_USER_AGENT The browser type of the visitor
PATH The system path of your server (usally /bin, /usr/sbin, etc)
QUERY_STRING The query string
REMOTE_ADDR The IP address of the visitor
REMOTE_HOST The hostname of the visitor (if your server has reverse- name-lookups on; otherwise this is the IP address again)
REMOTE_PORT The port the visitor is connected to on the web server
REMOTE_USER The visitor's username (for .htaccess-protected pages)
REQUEST_METHOD GET or POST
SCRIPT_FILENAME The full pathname of the current CGI
SERVER_ADMIN The email address for your server's webmaster
SERVER_NAME Your server's fully qualified domain name (e.g. www.domainname.com )
SERVER_PORT The port number your server is listening on
SERVER_SOFTWARE The server software you're using (such as "agent 1.3" ???)

I consider the above as variables and stdin, stdout, stderr as STREAMS.
And yes, you do not have to limit yourself to using perl. I don't think you want to do this in VB, but wouldn't reading from and writing to a socket be the closest thing to stdin and stdout?

Ciao,
VirtuallyVB (around here)