#!/usr/bin/perl
# echo-perl --
#
# Produce a page containing all FastCGI inputs
#
# Copyright (c) 1996 Open Market, Inc.
#
# See the file "LICENSE" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# $Id: echo.PL,v 1.2 2000/12/14 13:46:23 skimo Exp $
#
# Changed by skimo to demostrate autoflushing 1997/02/19
#
use FCGI;
use strict;
sub print_env {
my($label, $envp) = @_;
print("$label:
\n
\n"); my @keys = sort keys(%$envp); foreach my $key (@keys) { print("$key=$$envp{$key}\n"); } print("
\n"); } my %env; my $req = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%env); my $count = 0; while($req->Accept() >= 0) { print("Content-type: text/html\r\n\r\n", "
\n"); my $len = 0 + $env{'CONTENT_LENGTH'}; if($len == 0) { print("No data from standard input.
\n");
} else {
print("Standard input:
\n
\n"); for(my $i = 0; $i < $len; $i++) { my $ch = getc(STDIN); if($ch eq "") { print("Error: Not enough bytes received ", "on standard input\n"); last; } print($ch); } print("\n
\n");
}
print_env("Request environment", \%env);
print "More on its way ... wait a few seconds\n
\n
";
$req->Flush();
sleep(3);
print_env("Initial environment", \%ENV);
$req->Finish();
}