sironekotoroの日記

Perl で楽をしたい

Perlの絵本 第8章 CGIプログラミング

  • やはり、perl使いを目指すならCGIは避けて通れぬ道。
    • 時代遅れとかいろいろ言われているけどさ。
  • パーミッション変更し忘れで500 Internal Server Errorを連発、早くもmojolicious::Liteに戻りたくなる
  • MacOSXでのapache設定から感じる地雷臭。
  • あと、この本のスクリプトuse strict;,use warningsしてないので気になる・・・

フォーム

  • htmlでformタグは知っていたんだけど、そこに入力した内容をどうCGIに渡すか、ずっと疑問だった。
  • form内に記入した要素が、methodに従った環境変数に引き渡されて、cgiがその環境変数から要素を引き出して使う、ということらしい。
  • getとpostで要素の入る環境変数が違う。
    • get:$ENV{"QUERY_STRING"}
    • post:$ENV{"CONTENT_LENGTH"})

文字コード

  • 受け取った文字列はエンコードされているので、perlの内部表現にする為にデコードする
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c",hex($1))/eg;

環境変数から要素を受け取り、それを連想配列格納する

foreach (split(/&/,$str)){
    my ($key , $value) = split (/=/,$_);
    $data{$key} = $value;
}

表示・・・ソースは見づらいなぁ

print "Content-Type: text/html;charset=UTF-8\n\n";
print "<html>\n";
print "<head><title>WELCOME</title></head>\n";
print "<body>\n";
print "$data{'NAME'}</br>\n";
print "<body>$data{'SEX'}\n";
print "</body>";
print "</html>\n";