I am trying to wean myself from CGI.pm, an easy task for most of you, but I am 
a beginner. The code below works, but that does not mean it always will or that 
it cannot be improved. I found the main part of this in CGI Programming with 
Perl, which is 18 years old, and I’ve given up hoping that a new edition of it 
will come out. I’ve read somewhere that servers can give the wrong value for 
CONTENT_LENGTH, so I stuck in a second chance before bailing out; and of course 
this may not be necessary or done well.  I look forward to any and all 
comments. I also would appreciate any guidance on how I can learn more about 
CGI and how to deal with it. This book has been extremely valuable to me, but 
even I can see that some of its guidance is a bit creaky! — Rick

sub get_form_data {
    my $query = q{}; # Empty string
    my @name_value_pairs;
    if ( read( STDIN, $query, $ENV{'CONTENT_LENGTH'} ) 
          == $ENV{CONTENT_LENGTH}
       ){
        @name_value_pairs = split /&/, $query;
    }elsif (! read( STDIN, $query, $ENV{'CONTENT_LENGTH'} ) # Second chance
                == $ENV{CONTENT_LENGTH}
           ){
        die "Trouble parsing POST request: $!"
    }

    foreach my $pair (@name_value_pairs){
        my ($key, $value) = split /=/, $pair;
        chomp ($key, $value);
        $pf{$key} = $value;
    }
return;
}

Reply via email to