Most of the information needed by CGI programs is made available
via Unix environment variables. Programs can access this information
as they would any environment variable (via the %ENV
hash in Perl). 
The table below lists environment variables commonly available 
through CGI. However, since servers occasionally vary on 
the names of environment variables they assign, check with your
own server documentation for more information.
Here's a simple Perl CGI script that uses environment variables to display various information about the server:
#!/usr/local/bin/perl
print << EOF
Content-type: text/html
<HTML>
<HEAD><TITLE>About this Server</TITLE></HEAD>
<BODY><H1>About this Server</H1>
<HR><PRE>
Server Name:        $ENV{'SERVER_NAME'}<BR>
Running on Port:    $ENV{'SERVER_PORT'}<BR>
Server Software:    $ENV{'SERVER_SOFTWARE'}<BR>
Server Protocol:    $ENV{'SERVER_PROTOCOL'}<BR>
CGI Revision:       $ENV{'GATEWAY_INTERFACE'}<BR>
<HR></PRE>
</BODY></HTML>%ENV hash.
Here's typical output of the program:
<HTML> <HEAD><TITLE>About this Server</TITLE></HEAD> <BODY><H1>About this Server</H1> <HR><PRE> Server Name: www.whatever.com Running on Port: 80 Server Software: NCSA/1.4.2 Server Protocol: HTTP/1.0 CGI Revision: CGI/1.1 <HR></PRE> </BODY></HTML>