Przemek Przemek - 1 month ago 8
Perl Question

How can I read the URL-Data send with POST in Perl?

I'm trying to read out the POST-Data that was sent from a form in a page to my Perl Script. I googled and found out that:

read(STDIN, $param_string, $ENV{'CONTENT_LENGTH'})


reads out the whole Data-String with and writes the whole string to $param_string in the form of

Param1=Value1&Param2=Value2&Param3=Value3


by spliting it at the right places I get the necessary Data.

But I wonder why my $param_string is empty.

When I try the whole thing with GET:

$param_string = $ENV{'QUERY_STRING'};


everything works fine. Does anybody have an idea?

Answer

There absolutely no real reason for someone at your level to want to hand parse CGI requests.

Please use CGI::Simple or CGI.pm.

CGI.pm has a lot of baggage (HTML generation, function oriented interface) which makes CGI::Simple preferable.

Using any CGI processing module on CPAN is better than trying to write CGI processing code from scratch.

See parse_query_string in CGI::Simple for a way of accessing parameters passed using the query string when processing a form that is POSTed to your script.

If you want to learn how to do it right, you can read the source code of either module. Reading through the CGI.pm CHANGES file is also instructive.

Comments