A) Are you using mod_perl or not?

Yes. I've been reading the CGI::Simple docs carefully, and you probably know what it says about working alongside mod_perl:

This module uses Selfloader and the __DATA__ token to ensure that only code that is used gets complied. This optimises performance but means that it will not work under mod_perl in its default configuration. To configure it to run under mod perl you would need to remove two lines from the module.
use Selfloader; .... __DATA__

Those two lines are commented in the source code of the module I'm using, so I guess that's enough. As an added bonus, here are the Apache config file and mod_perl startup file I'm using.

In httpd.conf:

<Location /perl-status> SetHandler perl-script PerlHandler Apache::Status Order deny,allow Deny from all Allow from 127.0.0.1 </Location> Alias /perl/ "/path/to/some/folder/" <Location /perl/> Options ExecCGI SetHandler perl-script PerlHandler Apache::Registry PerlHeaderParserHandler "sub { tie *STDOUT, 'Apache' unless tied * +STDOUT; }" PerlSendHeader On Order deny,allow Deny from all Allow from 127.0.0.1 </Location> PerlRequire mod_perl_startup.pl

An explanation on why I have PerlHeaderParserHandler "sub { tie *STDOUT, 'Apache' unless tied *STDOUT; }" can be found here. If that's what's causing the problem, I could compile a working version of mod_perl, no problem. And the deny/allow rules are like that, this is my home machine for personnal development. I don't think that should interfere in any way.

Here's the content of mod_perl_startup.pl:

#!/usr/bin/perl use strict; use lib qw(/usr/local/lib/perl); use CGI::Simple qw(-newstyle_urls); use Apache::DBI(); use DBI(); use DBD::mysql(); 1;
B) The error message from CGI::Simple seems pretty explicit to me. The content-length was 31 but it couldn't read any data from STDIN. This is probably because you can only read data *once* from STDIN, so if anything has read the data from STDIN first, CGI::Simple won't then also be able to read the data.

OK, makes sense

GET type requests don't work like this, as reading the appropate %ENV variable doesn't reset anything. So check to make sure nothing is reading the STDIN before you do -- you might consider scripts started by mod_perl related directives?

As far as I can tell, I have none, except that mod_perl_startup.pl I pasted up there.

C) If you are using mod_perl, I think you want Apache::Request or something similar.

OK, will take a look at that and give it a try. Thanks for the help.


In reply to Re^2: CGI::Simple POST data trouble by Fang
in thread CGI::Simple POST data trouble by Fang

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.