CGIで文字列を処理できるようにする

CGIで処理ができるように修正していきます。

送信した文字列を受け取る

CGIとして画面を表示することはできましたが、
このままではデータを受けとることができません。

use strict;
use CGI;

my $debug;

my $q=new CGI;
my @param=$q->param;
my %HASH;
for (@param){
    $HASH{$_}=$q->param($_);
    $debug.=qq($_ , $HASH{$_} | );
}

このように最初のところに追加します。

そして、$debug、が確認できるようにhtml上にも追加しておきます。

ここではbodyの直後に以下のようにしました。

print "<body>\n";

print "<body>$debug\n";

 

さらにtextareaのnameを設定しておきます。

print " <textarea name=\"\" rows=\"10\" cols=\"60\"></textarea>\n";

print " <textarea name=\"text\" rows=\"10\" cols=\"60\"></textarea>\n";

 

ここまで修正したら、CGIに戻って適当なメッセージを送信してみます。

OKをおすと・・・

フォームの上部に表示されました。
サーバーの中で文字列が処理されたからです。

何が起きているか

本当は環境変数からこのようなPOSTやGETのデータを拾うのですが、
この”CGI”というモジュールを使うと簡単です。

環境変数から読み取るよりも処理が重くなってしまいますが、
使い分けてみたところソースプログラムも短くなるし、
文字化けなどのトラブルも少ないので使ったほうが良いと思います。

上部の
text , 送信テストをしてみます。

HASHというハッシュ変数の
キー’text’

”送信テストをしてみます。”
という文字列が入っているという意味になります。

$HASH{'text'}

この変数をコマンドラインで作ったソースで処理をするようにするだけです。