Re: Passing STDIN to subprogram

2000-09-27 Thread Doug MacEachern

On Wed, 6 Sep 2000, erich oliphant wrote:

 I am replacing a CGI shell script with a modperl script.  At one point in 
 the shell script subprogram is called.  The HTML form that calls the script 
 calls it via a POST.  As such the params are available via STDIN.  The 
 subprogram call (which I can't eliminate yet) expects to see the form 
 params.  However when I call it from the perl script STDIN is empty.  I have 
 tried backticks and the open call (which are supposed to inherit STDIN) to 
 no avail.

STDIN cannot be passed to a subprocess, because STDIN is not stdin under
mod_perl.  that is, it's not a file descriptor, it's just a Perl glob,
that's tie-d to the Apache request_rec + api.  one solution would be to do
switch the POST to a GET:

local $ENV{PATH} = '/home/dougm/bin';

my $r = shift;

$r-send_http_header;

local $ENV{GATEWAY_INTERFACE} = 'CGI/1.1'; #hmm, shouldn't need todo this

local $ENV{QUERY_STRING} = $r-content;
local $ENV{REQUEST_METHOD} = 'GET';
local $ENV{CONTENT_LENGTH} = 0;

print `cgi-dump`;

where cgi-dump is:
#!/usr/local/bin/perl

use CGI ();

my $q = CGI-new;

print $q-as_string;

works just fine:

% POST http://localhost:8529/perl/post.pl
Please enter content (application/x-www-form-urlencoded) to be POSTed:
one=1
UL
LISTRONGone/STRONG
UL
LI1BR

/UL
/UL





Passing STDIN to subprogram

2000-09-06 Thread erich oliphant

I am replacing a CGI shell script with a modperl script.  At one point in 
the shell script subprogram is called.  The HTML form that calls the script 
calls it via a POST.  As such the params are available via STDIN.  The 
subprogram call (which I can't eliminate yet) expects to see the form 
params.  However when I call it from the perl script STDIN is empty.  I have 
tried backticks and the open call (which are supposed to inherit STDIN) to 
no avail.

Any suggestions?

Erich
_
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

Share information about yourself, create your own public profile at 
http://profiles.msn.com.