Lesson3 電卓プログラム
  • フォームのデータを扱う
  • 条件式を使う(If文)
  • 繰り返して計算ができる
study3.cgi

require './cgiparse.pl';

#★サブルーチンを呼び出す
& cgi'Parse();

#★フォームから送られてきた「keisansiki」の内容を変数に代入
$expr = $cgi'name{'keisansiki'};

#★HTMLのヘッダを出力
print &cgi'HTTPHeader();
print &cgi'SimpleTitle('calculator using form');

print "<H1>電卓プログラム</H1>\n";
print "前回の計算結果を利用できます\n";

#★「\"」はダブルコーテーションの中で記号を使うため
print "<FORM METHOD=\"POST\" ACTION=\"study3.cgi\">\n";

#★条件式(扱える記号の場合)
if ($expr =~ /^[ 0-9.*\/+-]+$/) {
  print "$expr = ";
  #★eval関数は文字列を数値に変換して計算結果を返す
  #★計算式に続いて前回の結果が入ったテキストボックスが表示される
  print "<INPUT NAME=\"keisansiki\" VALUE=\"", eval($expr), "\">\n";
  print "<P>使える記号は '0 1 2 3 4 5 6 7 8 9 . * / + -'です。\n";
} else {
  #★扱えない記号がある場合エラーメッセージを表示する
  print "<INPUT NAME=\"keisansiki\">\n";
  print "使える記号は '0 1 2 3 4 5 6 7 8 9 . * / + -'のみです。\n";
}
#★HTMLの締めくくりを出力
print &cgi'SimpleEnd();