トップ > Perl Tips > 簡単な電卓を作ろう!


 ■ 簡単な電卓を作ろう!

基礎編:数学的な計算(加減乗除・平方根etc)

今回は「電卓」を作りたいと思います。

<サンプル>
今回は計算式入力用のHTMLファイルと、計算処理用のCGIスクリプトを用意します。

<計算式入力用HTMLファイル>


<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=Shift_JIS">
<TITLE>電卓</TITLE>
</HEAD>
<BODY>
<FORM ACTION="calc.cgi" METHOD="POST">
式を入力してください。<INPUT TYPE="TEXT" NAME="calc" SIZE="60">
<INPUT TYPE="SUBMIT" VALUE=" 計算 ">
</FORM>
<HR>
<H3>HELP</H3>
<DL>
<DT>1 <B>+</B> 2</DT><DD>足し算</DD>
<DT>2 <B>-</B> 1</DT><DD>引き算</DD>
<DT>4 <B>*</B> 2</DT><DD>掛け算</DD>
<DT>4 <B>/</B> 2</DT><DD>割り算</DD>
<DT>5 <B>%</B> 2</DT><DD>5を2で割った余り(=1)</DD>
<DT>5 <B>**</B> 2</DT><DD>5の2乗(=25)</DD>
<DT><B>sqrt</B>(100)</DT><DD>平方根(答えは10となります)</DD>
</DL>
</BODY>
</HTML>

<計算処理用CGIスクリプト>
#!/usr/bin/perl

read( STDIN, $data, $ENV{ 'CONTENT_LENGTH' } );
$data =~ tr/+/ /;
$data =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
($name,$value)=split(/=/,$data);

print "Content-type: text/html\n\n";
print "計算結果:\n";
print eval ($value);


HTMLファイルは任意の名前、
CGIスクリプトは"calc.cgi"と、名前を付けて保存してください。


<解説>
○使い方
HTMLファイルを呼び出し、「式を入力してください。」というところに、
下の記号を使った式を入力します。
ここにも書いておきますが、HTMLファイルにも「HELP」として書いてあります。
「+」足し算
「-」引き算
「*」掛け算
「/」割り算
「5 % 2」5を2で割った余り(=1)
「5 ** 2」5の2乗(=25)
「sqrt(100)」平方根(答えは10となります)

○スクリプト解説
read( STDIN, $data, $ENV{ 'CONTENT_LENGTH' } );
$data =~ tr/+/ /;
$data =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
($name,$value)=split(/=/,$data);

HTMLファイルから送信されたデータ(POST)を受け取り、
デコードします。

print "Content-type: text/html\n\n";
print "計算結果:\n";
print eval ($value);

ここで表示をします。
"eval ()"というのは、受け取った式を計算して数字に直します。
そのまま"print $value;"などと表示させても、
式そのもの(1 + 2 など)がそのまま表示されてしまいます。




トラックバック

このエントリーのトラックバックURL:
http://easycgi.xrea.jp/mt-tb.cgi/40