#!/usr/local/bin/perl # ############################################################# ### ### CGI日記帳 Ver.1.0 ### [2/2] 表示用 ### ### (C) 2001 Sentora Dori ### http://www.lowpower.iis.u-tokyo.ac.jp/~hat ### ############################################################# # #################### 変数設定(ここから) #################### # 日記データをおくディレクトリのパス $databasedir = '.'; # タイトル $title = '道里千虎の日記帳'; #################### 変数設定(ここまで) #################### @week = ("日", "月", "火", "水", "木", "金", "土"); &init_form; $datafile = "$databasedir/$diaryname.txt"; &show_diary; exit(0); ###################### ##### subroutine ##### ###################### #----- 日記を表示する ----- sub show_diary { &open_file(TXT, "$datafile", "[no data file]"); @txt = ; close_file(TXT); print "Content-type: text/html\n\n"; print <<"END_HEADER"; $title
$title


END_HEADER for ($i = 0; $i < @txt; $i++) { ($print_id, $date, $print_message) = split(/,/, $txt[$i]); ($bakdate) = split(/\s/, $date); ($year, $mon, $day) = split(/-/, $bakdate); $weekday = &getwday($year, $mon, $day); $print_date = "$year年$mon月$day日"; print "
$print_date


$print_message
"; print "
"; } # 過去の日記などへのリンクを、'END_FREESPACE'までの個所にタグで自由に書く print <<"END_FREESPACE"; END_FREESPACE print ""; } #----- 曜日取得 ----- sub getwday { local($year, $mon, $day) = @_; local($wday); if ($month == 1 || $month == 2) { $year--; $month += 12; } $wday = int($year + int($year/4) - int($year/100) +int($year/400) + int((13*$month+8)/5) + $day) % 7; return $wday; } ##### 入出力処理 ###### #----- ブラウザへの入力データの取得 ----- sub init_form { local($query, @dataarray, $data, $property, $value, $method); $method = $ENV{'REQUEST_METHOD'}; $method =~ tr/A-Z/a-z/; if ($method eq 'post') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } @dataarray = split(/&/, $query); $diaryname = $dataarray[0]; } ##### ファイル処理 ##### #----- ファイルオープン ----- sub open_file { local(*FILE, $name, $msg) = @_; if (!open(FILE, $name)) { &print_error("$msg"); } seek(FILE, 0, 0); } #----- ファイルクローズ ----- sub close_file { local(*FILE) = @_; close(FILE); } ##### エラー処理 ##### #----- エラー文を出力し終了 ----- sub print_error { local($msg) = @_; print "Content-type: text/html\n\n"; print <<"END_PRINT_ERROR"; $contenttype $msg

$msg


END_PRINT_ERROR exit(0); }