#!c:\perl\bin\perl print "Content-type: text/html\n\n"; print "Hello perl"; |
#!c:\perl\bin\perl print "Content-type: text/html\n\n"; print "Hello perl"; |
Content-type: text/html Hello perl |
Hello perl |
#!c:\perl\bin\perl print "Content-type: text/html\n\n"; $a=5; $b=3+5; print "3+5の答えは$bです"; |
#!c:\perl\bin\perl print "Content-type: text/html\n\n"; $a = int(rand 6) +1; print "$a"; while($a > 0) { print " @ " ; --$a; } |
■テキストファイルの一部を読み込んで表示 というようなテキストファイル「abc.txt」があった場合。 このテキストファイルの始めの3行だけを抜き取って表示するというプログラムです。 abc.txt はこちら ●ソースコードと解説 |
#!c:\perl\bin\perl print "Content-type: text/html\n\n"; open(FILE, "<abc.txt"); #abc.txtというファイルを読み込み @data=<FILE>; #abc.txtを@dataに代入 close <FILE>; #ファイルを閉じます print "@data[0]<br>"; #1行目を表示して改行 print "@data[1]<br>"; #2行目を表示して改行 print "@data[2]<br>"; #3行目を表示して改行 |
#から後ろは、「コメント」となり、ラクガキをしてもプログラムには反映されません。 プログラムだけだと、どうしても人間には内容がわかりにくいので、 わかりやすいコメントを入れておくことで、プログラムが見やすくなります。 open(FILE, "<abc.txt"); 「open」は、コメントの通り引数で指定したファイルを読み込む関数です。 「FILE」はファイルハンドルと言い、複数のファイルを開いたときなどに 個々を指定する時などに使います。 「<」は読み込み専用で開くという意味です。 close <FILE>; その名の通り、指定したファイルを閉じます。 print "@data[0]<br>"; 読み込んだファイルを@dataという名前のデータの入れ物の中に入れています。 この入れ物は、「配列」と言い、変数の塊のようなものです。 名前の先頭に「$」がつくと変数、「@」がつくと配列となります。 変数と配列については↓のようになっています。 print "@data[0]<br>"; そして、最後のprint行で、読み込んだテキストデータのうち上から3行までを 順番に表示して<br>で改行・・・という処理をして表示しています。 ■アクセスカウンター 表示するたびに1ずつ数字が増えていきます。 ようやくCGIらしくなってきました。 ●ソースコードと解説 |
#!c:\perl\bin\perl print "Content-type: text/html\n\n"; open(READ, "<log.dat"); $count=<READ>; close <READ>; ++$count; open(WRITE, ">log.dat"); print WRITE, $count; close <WRITE>; print "あなたは$count番目の訪問者です"; |
open(READ, "<log.dat"); 今までのアクセス数を保存している、datファイルというものを呼び出しています。 アクセスカウンターは、文字を表示したり、計算をしたり、ランダムで数字を選んだりするプログラムと違い、 今までの数字を記録しておかないといけません。 テキストファイルの一部を読み込んで表示するプログラムを応用して、 今までのアクセス数を呼び出し、 表示して、また保存するという作業が必要になります。 そのアクセス数を保存しておくのが、datファイルです。 作り方としては、普通のテキストファイルに「0」とだけ書き込んで保存して、 ファイルの拡張子を「.dat」に変えるだけ。 これがdatファイルです。(右クリック → 対象をファイルに保存) テキストファイルの一部を読み込んで表示するプログラムでは、ファイルハンドルの名前を<FILE> としましたが、今回は<READ>となっています。名前は自由に決めてよいですが、 「大文字アルファベットで書くこと」 「closeで閉じるまで同じ名前を使うこと」 の2つを守ってください。 $count=<READ>; 読み込んだアクセス数を$countに代入します。 close <READ>; 読み込んだら、datファイルは一度閉じます。 ++$count; サイコロプログラムに出てきたものと同類で、$countの値に1を足します。 open(WRITE, ">log.dat"); 先ほどは「<」読み込み用で開いたのに対して、今度は「>」書き込み用で開きます。 print WRITE, $count; これは、WRITEと$countの内容を画面に出力するのではなく、 datファイルに、数字が加算された$countの中身を書き込むという処理をしています。 print "あなたは$count番目の訪問者です"; ここがアクセスカウンターとして表示される部分です。 |