読者です 読者をやめる 読者になる 読者になる

Perl で単純に CGI パラメータを取得するには

Perl

単にメモ書き(今までもその都度、調べては書いていたが…)。
Perl で CGI を処理するとき、標準で入っている CGI.pm を使えばいい。
わざわざ使うほどでもないときに使えるサブルーチンを書き留めておく。

sub get_params {
  my $ctn;
  if ($ENV{'REQUEST_METHOD'} eq "GET") {
    $ctn = $ENV{'QUERY_STRING'};
  } elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
    read(STDIN, $ctn, $ENV{'CONTENT_LENGTH'});
  } else {
    return NULL;
  }

  my %params = ();
  my @prms = split('&', $ctn);
  foreach (@prms) {
    my @tmp = split('=');

    $tmp[1] =~ tr/+/ /;
    $tmp[1] =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/ego;

    $params{$tmp[0]} = $tmp[1]; 
  }

  return %params;
}