#!/usr/bin/perl -T
##
# Show CGI Process Environment
##
# This perl program shows you how to access the process environment
# for CGI programs on your web server.
# It is also a useful debugging tool, as it shows you all of the
# available environment variables.
##
exit unless ($ENV{'REQUEST_METHOD'} eq "GET");
# CGI programs must print their own HTTP response headers
print "Content-type: text/html\n\n";
# Declare the SGML application as HTML
print "\n";
# Begin HTML
print "\n";
# A minimal document must include a header region with a title
print "
\n".
"CGI Process Environment\n".
"\n\n";
# Start document body
print "\n\n";
# Put values in a table for readability
print "\n\n";
# Caption the table
print " CGI Process Environment\n\n";
# Include table headers
print " \n".
" \n".
" Variable\n".
" | \n".
" \n".
" Value\n".
" | \n".
"
\n";
# Print each key/value pair as two column in a row
while (($var, $val) = each %ENV)
{
# Quote special HTML characters
$var =~ s/&/&/g; $var =~ s/</g; $var =~ s/>/>/g;
$val =~ s/&/&/g; $var =~ s/</g; $val =~ s/>/>/g;
print "\n".
" \n".
" \n".
" ".splitstring($var,30)."\n". # Wrap variable names at 30 chars
" | \n".
" \n".
" ".splitstring($val,80)." \n". # Wrap variable values at 80 chars
" | \n".
"
\n";
}
print "\n";
# End table
print "
\n\n";
# End document body
print "\n";
# End HTML
print "\n";
exit 0;
##
# The contents of variables should be split with a whitespace around every
# 80-100 chars when the length of the content is really larger then 80-100
# chars _and_ no whitespaces are contained.
##
sub splitstring {
my ($str, $col) = @_;
my $out = '';
while ($str ne '')
{
if (length($str) <= $col) {
$out .= $str;
last;
}
my $sep = rindex($str, " ", $col);
$sep = rindex($str, " ", $col) if ($sep == "\t");
if ($sep == -1) {
my $prefix = substr($str, 0, $col);
$str = substr($str, $col);
$out .= "$prefix—
";
}
elsif ($sep == 0) {
my $prefix = substr($str, 0, 1);
$str = substr($str, 1);
$out .= "$prefix";
}
else {
my $prefix = substr($str, 0, $sep);
$str = substr($str, $sep);
$out .= "$prefix
";
}
}
return $out;
}
__END__
## Copyright (c) 1998 The Apache Group. All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions
## are met:
##
## 1. Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
##
## 2. Redistributions in binary form must reproduce the above copyright
## notice, this list of conditions and the following disclaimer in
## the documentation and/or other materials provided with the
## distribution.
##
## 3. All advertising materials mentioning features or use of this
## software must display the following acknowledgment:
## "This product includes software developed by the Apache Group
## for use in the Apache HTTP server project (http://www.apache.org/)."
##
## 4. The names "Apache Server" and "Apache Group" must not be used to
## endorse or promote products derived from this software without
## prior written permission. For written permission, please contact
## apache@apache.org.
##
## 5. Products derived from this software may not be called "Apache"
## nor may "Apache" appear in their names without prior written
## permission of the Apache Group.
##
## 6. Redistributions of any form whatsoever must retain the following
## acknowledgment:
## "This product includes software developed by the Apache Group
## for use in the Apache HTTP server project (http://www.apache.org/)."
##
## THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
## EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
## PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
## ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
## STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
## OF THE POSSIBILITY OF SUCH DAMAGE.
## ====================================================================
##
## This software consists of voluntary contributions made by many
## individuals on behalf of the Apache Group and was originally based
## on public domain software written at the National Center for
## Supercomputing Applications, University of Illinois, Urbana-Champaign.
## For more information on the Apache Group and the Apache HTTP server
## project, please see .
##