■=Perl, ■=結果
アクセス時に「きょうは何の日」かを検索し表示させましょう。先ず「きょうは何の日」のデータを作らなければなりませんが、大変ですので適当にエクセルで月日と記事を作ってしまいCSV形式で保存しました。なにもCSV形式じゃなくてもなんでもいいのですが、ようするに一定の法則にのっとり作られていればいいのです。CSV形式ならデータごとに ,(カンマ)で区切られています。 例えば1月1日なら
|
| open(FILE, 'filename') |
| open (DIARY, 'diary.csv'); |
| close(FILE) |
| close(DIARY); |
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
require './l_head_2.txt';
open (DIARY, 'diary.csv');
while (defined($line = <DIARY>)) {
print "$line<br>\n";
}
close(DIARY);
require './l_foot_2.txt';
exit;
|
1,1,1月1日の記事が入ります, 1,2,1月2日の記事が入ります, 1,3,1月3日の記事が入ります, |
|
while (defined($line = <DIARY>)) { print "$line<br>\n"; } |
l_diary_1.cgi
| split(/パターン/,文字列) |
| @item = split(/,/,$line); |
if (条件式) {条件式に当てはまるときの指示}
|
if ($item[0] == $tsuki and $item[1] == $mday) {
print "$item[2]<br>\n";
}
|
#!/usr/local/bin/perl # きょうは何の日 # 2001.8.15 # Sstoshi Sekiguchi print "Content-type: text/html\n\n"; require 'time.pl'; require './l_head_2.txt'; $tsuki = $mon + 1; print "tsuki=$tsuki, DAY=$mday |
l_diary_2.cgi
8月15日の記事が入ります |
| 配列> | $item[0] | $item[1] | $item[2] | $item[3] | $item[4] | |||||
| データ | 月 | , | 日 | , | ココのコメント | , | 出来事 | , | 誕生日 | , |
同じ項目でデータが複数あるときは★マークで区切ることにしました。例えば
1,1,元旦だよ。いつもよりおいしい物が食べられます!,リンカーン奴隷解放宣言布告(1863年)★手塚治虫4コマ漫画「マアチャンの日記帳」の連載で漫画家としてデビュー(1946年)★フジテレビで「鉄腕アトム」の放映が開始(1963年),室町時代の僧 一休(1394年)★侠客 清水次郎長(1820年),
です。
このデータを元に
ココです。きょうは1月1日ですね。
きょうは元旦だよ。いつもよりおいしい物が食べられます!
昔の[きょうの出来事]は
『リンカーン奴隷解放宣言布告(1863年)』と
『手塚治虫4コマ漫画「マアチャンの日記帳」の連載で漫画家としてデビュー(1946年)』と
『フジテレビで「鉄腕アトム」の放映が開始(1963年)』です
それから[きょうお誕生日の人]は
『室町時代の僧 一休(1394年)』さんと
『侠客 清水次郎長(1820年)』さんです。
こうなればいいですが!データを作るのが大変です!!366日全部ができるのはいつのことか判りませんが、少しずつ進めてみます。
l_diary.cgi
#!/usr/local/bin/perl print "Content-type: text/html\n\n"; $title = "ココの「きょうは何の日」"; require 'time.pl'; require './cocotime_photo.pl'; #sub disp_photo require './heder.txt'; $tsuki = $mon + 1; |
require './cocotime_photo.pl'の cocotime_photo.pl は以下のようになっています。
sub cocotime_photo {
print "<td align='center' bgcolor='#000000'>\n";
print "<font color='#FFFFFF'>$hour時</font><img src='../images/cocot";
print $hour;
print ".jpg' border='1'><font color='#EEEEEE'>$min分</font></td></tr>\n";
print "<tr><td align='center'>$yyyymmdd($weekJ)</td></tr>\n";
print "<tr><td align='center'>$hour時を過ぎています</td></tr>\n";
}
1
|
print "<center>\n"; print "<h2>ココの「きょうは何の日」</h2>\n"; &disp_photo; &disp_mess; print qq|<p align="right">このページの解説は<a href="../l_diary.html">こちら→</a></p>|; require './fotter.txt'; exit; |
sub disp_photo { #時間ごとに写真を代える
print qq|
<table border="0" width="600" bgcolor="#EEEEEE">
<tr><td align="center">こんにちは、ココです。</td><td rowspan="2">
<table border="1" width="200" align="right">
|;
&cocotime_photo;
}
|
sub disp_mess { #月日ごとにメッセージを代える
open (DIARY, 'diary_my.csv');
while (defined($line = <DIARY>)) {
@item = split(/,/,$line);
if ($item[0] == $tsuki and $item[1] == $mday) {
$item[3] =~ s/★/<\/b>』と<br>『<b>/g;
$item[4] =~ s/★/<\/b>』さんと<br>『<b>/g;
print qq|
<div class="line1">
</table>
<tr><td>ところで $item[2]</td></tr>
</td><tr><td colspan="2">
それでは$item[0]月$item[1]日の出来事と誕生日の方をお知らせします。<hr>
昔の[きょうの出来事]は<br>『<b>$item[3]</b>』です。<hr>
それから[きょうお誕生日の人]は<br>『<b>$item[4]</b>』さんです。<p>
またあした遊びに来てくださいね。</div></td></tr>
</table>
|;
}
}
close(DIARY);
}
|
$item[3] =~ s/★/<\/b>』と<br>『<b>/g; $item[4] =~ s/★/<\/b>』さんと<br>『<b>/g; |
全てをまとめるとしたのようになります。
l_diary.cgi
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
$title = "ココの「きょうは何の日」";
require 'time.pl';
require './cocotime_photo.pl'; #sub disp_photo
require './heder.txt';
$tsuki = $mon + 1;
print "<center>\n";
print "<h2>ココの「きょうは何の日」</h2>\n";
&disp_photo;
&disp_mess;
print qq|<p align="right">このページの解説は<a href="../l_diary.html">こちら→</a></p>|;
require './fotter.txt';
exit;
sub disp_photo { #時間ごとに写真を代える
print qq|
<table border="0" width="600" bgcolor="#EEEEEE">
<tr><td align="center">こんにちは、ココです。</td><td rowspan="2">
<table border="1" width="200" align="right">
|;
&cocotime_photo;
}
sub disp_mess { #月日ごとにメッセージを代える
open (DIARY, 'diary_my.csv');
while (defined($line = <DIARY>)) {
@item = split(/,/,$line);
if ($item[0] == $tsuki and $item[1] == $mday) {
$item[3] =~ s/★/<\/b>』と<br>『<b>/g;
$item[4] =~ s/★/<\/b>』さんと<br>『<b>/g;
print qq|
<div class="line1">
</table>
<tr><td>ところで $item[2]</td></tr>
</td><tr><td colspan="2">
それでは$item[0]月$item[1]日の出来事と誕生日の方をお知らせします。<hr>
昔の[きょうの出来事]は<br>『<b>$item[3]</b>』です。<hr>
それから[きょうお誕生日の人]は<br>『<b>$item[4]</b>』さんです。<p>
またあした遊びに来てくださいね。</div></td></tr>
</table>
|;
}
}
close(DIARY);
}
|
diary.cgi
大きくスクリプトは変わっていませんが、フォームデータから月日を取得しています。最初にアクセスするときはきょうの日付で検索し、任意の日付をもとに検索表示するようになってます。
下にスクリプトをまとめて表示しておきます。
diary.cgi
#!/usr/local/bin/perl
require 'stdin.txt';# 入力文字処理
$tsuki = $FORM{'tsuki'};
$nichi = $FORM{'nichi'};
print "Content-type: text/html\n\n";
$title = "ココの「きょうは何の日」";
require 'time.pl';
require './cocotime_photo2.pl'; #sub disp_photo
require './heder.txt';
$getsu = $mon + 1;
if ($tsuki eq '' or $nichi eq '') {
$tsuki = $getsu;
$nichi = $mday;
}
print qq|
<center>
<table>
<table border="0" width="600"><tr><td align="center">
<h2>ココの「きょうは何の日」</td></h2></tr>
<tr><td><table border="1" width="600" bgcolor="#EEEEEE">
<tr><td valign="center" bgcolor="#000000" width="200">
<table border="0" align="center" bgcolor="#EEEEEE" width="200">
|;
&cocotime_photo;
print qq|
<tr><td><center>
<form action="./diary.cgi" method="POST">
<input type="text" name="tsuki" maxlength="2" size="2" value="
|;
print $getsu;
print qq|">月
<input type="text" name="nichi" maxlength="2" size="2" value="
|;
print $mday;
print qq|">日
<input type="submit" value="検索">
</td></form></tr></table>
</td><td width=400"><center>こんにちは、ココです。</center><p>
|;
&disp_mess;
print qq|<p align="right">このページの解説は
<a href="../l_diary.html">こちら→</a></p>
</td></tr></table>|;
require './fotter.txt';
exit;
sub disp_mess { #月日ごとにメッセージを代える
open (DIARY, 'diary_my.csv');
while (defined($line = <DIARY>)) {
@item = split(/,/,$line);
if ($item[0] == $tsuki and $item[1] == $nichi) {
$item[3] =~ s/★/<\/b>』と<br>『<b>/g;
$item[4] =~ s/★/<\/b>』さんと<br>『<b>/g;
print qq|
<div class="line1">
それでは$tsuki月$nichi日の出来事と<br> 誕生日の方をお知らせします。<hr>
ところで $item[2]</div></td></tr>
</td><tr><td colspan="2">
<div class="line1">昔の[きょうの出来事]は<br>『<b>$item[3]</b>』です。<hr>
それから[きょうお誕生日の人]は<br>『<b>$item[4]</b>』さんです。<p>
またあした遊びに来てくださいね。</td></div></tr>
</table>
|;
}
}
close(DIARY);
}
|
| | Back | Coco's Home | ココとPerlで遊びませんか | |