今日の課題はおみくじです。


画面にさいころの目を表示させ、4が出たときだけ短いメッセージを表示します。


では、コーディング開始。


-------------------------------------------------------------------

#! c:/perl/bin/perl

# さいころを振る

$n = int(rand 6) + 1;

#CGIヘッダーの出力

print "content-type: text/html\n\n";

#HTMLの出力

print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>perlさいころ</title></head>\n";
print "<body>\n";
print "<p>さいころの目は<big>$n</big>です。</p>\n";

#御言葉を出力

if($n == 4){

print "<p>ふ、不吉な・・・・。4が出ました。</p>\n";

}

print "</body></html>\n";

------------------------------------------------------------------------



http://127.0.0.1/tendays/2-1.cgi 実行。



4が出ときはこんな感じです。 


さいころの目は4です。

ふ、不吉な・・・・。4が出ました。



今日のポイント


$n = int(rand 6) + 1;


は、以下と同じ意味でひとつにまとめる書き方。

ん~シンプル。


$r = rand 6;

$n = int($r) + 1;


それとif文


if($n == 4){

print "<p>ふ、不吉な・・・・。4が出ました。</p>\n";

}


$n == 4 は、$nが4と等しいとき。perlでは、==が等しいという意味。

これポイントね。




大分なれてきた感じ、今日はこれでおしまい。

今日は、 さいころ作り。


CGIを実行するたびに、動的に数字が変化するプログラムだ。


さっそくコーディング。


------------------------------------------------------

#! c:/perl/bin/perl

#CGIヘッダの出力

print "Content-type: text/html\n\n";


#さいころを振る

$r = rand 6;

$d = int($r) + 1;

# HTMLの出力

print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";

print "<html>\n";

print "<head><title>Perl</title></head>\n";

print "<body><p>さいころの目は<big>$d</big>です。</p></body>\n";

print "<html>";
--------------------------------------------------------


さっそく実行。


今日は、何の問題もなく成功!


更新をかけるたびに、数字が動的に変化するぞ。



ここが今日のポイント。


$r = rand 6;

$d = int($r) + 1;


rand関数を引数6で呼び出しその戻り値を$rに代入している。


rand関数に引数6で呼び出した場合には、0以上6未満の数字がランダムに返される。


この戻り値は、少数であるため、 int($r) で整数にしている。


int関数は、整数部分を戻り値として返す関数であるのだ。



今日は、これでおしまい。

今日は、Perlで簡単な計算と変数を学びます。


4*13の答えは52です。


これを画面に表示させるのが、今日のミッション。


さあ、はじめるぞ。


コードをいちいち入力するは、めんどくさいがここは辛抱だ。


Perlになれるのが大切大切。


---------------------------------------------------------

#! C:/perl/bin/perl

#CGIヘッダの出力

print "Content-type: text/html\n\n";

#計算する

$n = 13;
$m = 4 * $n;

$HTML出力

print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n"
print "<head><title>Perlで計算</title><head>\n";
print "<body><p>4*13の答えは52です。</p></body>\n";
print "</html>";


------------------------------------------------------------


1-3.cgiで保存。



http://127.0.0.1/tendays/1-3.cgi 実行。



あ~またまた


Internal Server Error

どこかコーディングミスか??


2箇所修正。


7行目

$HTML出力 ← #がないのでコメント扱いになっていない。


9行目

print "<html>\n" ← 最後にセミコロンがない。


無事、表示完了! 順調順調!



まとめ


変数 は、数値や文字列を入れる「箱」のようなものです。

6,7行目の$n、$mは変数です。


右辺を左辺に代入しています。


$n = 13; ← $nに13を代入
$m = 4 * $n; ← 4×13の結果を$mに代入


ここで = は等しいではありませんので注意が必要!


Perlでの計算


足し算


$a = 1 + 1; #1+1の結果を$aに代入


$a = "1 + 1"; #文字列 "1+1"がそのまま代入


割り算


$v1 = 13;

$v2 = $v1 / 2;   # $v2に$v1割る2を代入


変数展開


$hoge = "つるかめつかめ";


print "ありがたや$hoge\n\n";


の結果は、


ありがたやつるかめつかめ



では、以下のようにシングルクォート文字列の場合は、


print 'ありがたや$hoge\n';

変数展開せずに、そのまま出力


ありがたや$hoge\n



なるほど、ダブルクォート文字列とシングルクォート文字列の違い 注意が必要だ。



ではでは、おやすみなさい。