こんにちは!
今日はperlを使って、フォームからのポストのやり方を解説しようと思うよ!一番したにコードを張っておいたので、そのソースの解説をするよ。
作ってるのはこれ
解説
準備
最初の行は、perlのある場所をしていしていますね。もしかしたら、あなたの場合だと、#!/usr/local/bin/perl などと、他のパスにあるかもしれません。
#!/usr/bin/perl
使うモジュールを読み込みます。strict, warnings はエラーを作った場合に教えてくれるから、書いています。 CGI は、フォーム関連の作業をするときに役にたつモジュールです。
use strict; use warnings; use CGI;
HTTPヘッダーしょり
httpへの出力を、$cgi->header() という関数で作ることができるよ。
文字コードなどの指定もできて、今回は utf-8を指定しています。
my $cgi = CGI->new(); print $cgi->header( -charset => 'utf-8' );
きも
nameという値が取れればという処理をしています。取れるということは、フォームからデータをPOSTしたってことですね。
それで、取れた場合、プリントアウトしています。htmlのタグとかを、フォームに入れることができてしまうと、タグが壊れたりするので、escapeHTMLというモジュールで、タグをエスケープするようにしています。
if ( $cgi->param('name') ) {
my $name = $cgi->param('name');
$name = $cgi->escapeHTML($name);
printf( 'あなたのナマエは<b>%s</b>ですね', $name );
}
これは、最初のフォームを表示してる部分です。<DATA> をprintすると、
__END__以下に書いた部分がそこに入ります。便利ですね。
else {
print <DATA>;
}
__END__
<html>
<head>
<title>POST Sample</title>
</head>
<body>
<h1>ポストしようぜ!</h1>
<form method="post">
ナマエ : <input type="text" name ="name"><br>
<input type="submit" value="ポストするぜ">
</form>
</body>
</html>
まとめ
簡単に違うページに、データを送ることができましたね。実際、複雑なデータを次のページになげたりしてるのも、ただ数が多かったりするだけで、同じような仕組みでできています。
perlで動きのある、webサイトを作るのは結構簡単だったりします。
プログラミングは、難しいと思ってるあなた、以外と簡単なので遊んでみてはどうでしょうか?
全コード
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
my $cgi = CGI->new();
print $cgi->header( -charset => 'utf-8' );
if ( $cgi->param('name') ) {
my $name = $cgi->param('name');
$name = $cgi->escapeHTML($name);
printf( 'あなたのナマエは<b>%s</b>ですね', $name );
}
else {
print <DATA>;
}
__END__
<html>
<head>
<title>POST Sample</title>
</head>
<body>
<h1>ポストしようぜ!</h1>
<form method="post">
ナマエ : <input type="text" name ="name"><br>
<input type="submit" value="ポストするぜ">
</form>
</body>
</html>



実行してみたら、
> print ;
のところで「DATAハンドラなんて開いてないよ」というエラーが出てしまいます。
こんにちは!ご指摘ありがとうございます。
環境が違うとうまくいかなかったりするのかなぁ >_<
とりあえず、ヒアドキュメントを使うとかでしょうか。
my $data =<<"__HTML__";
hoge hoge
__HTML__
print $data;