#!/usr/local/bin/perl #┌───────────────────────────────── #│ Web Calen v1.7 (2003/04/12) #│ Copyright (c) KentWeb #│ webmaster@kent-web.com #│ http://www.kent-web.com/ #└───────────────────────────────── $ver = 'Web Calen v1.7'; #┌───────────────────────────────── #│ [注意事項] #│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した #│ いかなる損害に対して作者は一切の責任を負いません。 #│ 2. 設置に関する質問はサポート掲示板にお願いいたします。 #│ 直接メールによる質問は一切お受けいたしておりません。 #│ 3. 同梱のアイコンは以下のサイトに著作権があります。 #│ (heart.cgi除く) #│ ・牛飼いとアイコンの部屋 http://www.ushikai.com/ #└───────────────────────────────── #┌───────────────────────────────── #│ [使用方法] #│ 1. 書き込む場合には、「日付」をクリック → パスワード入力 #│ とすることで投稿フォームが現れます。 #│ 2. 書き込みが完了するとその「日付」に「PEN」アイコンが表示され #│ ます。「PEN」アイコンをクリックするとその書き込み内容が表示 #│ されます。 #│ 3. 書き込み内容を修正、削除する場合には、その「日付」をクリック #│ をクリックすると「修正」「削除」のセレクトボックスが表示され #│ ますので、そこでパスワードを入力し処理します。 #│ 4. カレンダを前月、翌月に移動するには、「BACK」「NEXT」アイコン #│ をクリックします。 #│ 5. 右フレームの管理用をクリックし、からパスワードを入力して入室 #│ すると、全ログファイルの容量を閲覧することができ、月次単位で #│ ログを一括削除することが可能です。 #│ 6. チェックモードの起動方法: ?mode=check という引数を付ける #│ 例: http://〜〜/calen.cgi?mode=check #└───────────────────────────────── # # [ 設置例 ] # # public_html / index.html # | # +-- meditation / medi.cgi [705] # | jcode.pl [604] # | # +-- log [707] / # | # +-- img / *.gif # #------------------------------------------------- # 設定項目 #------------------------------------------------- # ライブラリ取込 require './jcode.pl'; # タイトル $title = "My Web Calendar"; # タイトルの文字色 $t_color = "#880000"; # タイトル文字のサイズ $t_size = '22px'; # 管理パスワード(英数字で8文字以内) $pass = 'y@jim@2004'; # 戻り先 $home = '../index.html'; # スクリプト名 $script = './medi.cgi'; #テンプレートファイル $template = "./temp.html"; # ログファイルディレクトリ $logdir = './log/'; # 画像ディレクトリ (http://から記述してもよい) $imgurl = './img/'; # 本文文字のサイズ $body_size = 'x-small'; # 本文テーブルのサイズ $table_size = '450'; #本文の行間 $line = '180%'; # カレンダー文字のサイズ $calen_size = '10px'; # 本文文字のフォント $body_face = '"MS Pゴシック","MS UI Gothic",Osaka'; # 題名の色 $sub_color = "#333333"; # カレンダの下地色 $tbl_color = "#FFFFFF"; # 本日の色 $today_color = "#FFC3CE"; # 土曜日の色 $sat_color = "#0000FF"; # 日曜日の色 $sun_color = "#FF0000"; # 祝日/振替休日の色 $spe_color = "#FF0000"; # 平日の色 $nor_color = "#000000"; # カレンダの枠の色 $tbl_line = "#A57D6B"; # カレンダ表示1マスのサイズ $width = 23; # 横幅 $height = 23; # 縦幅 # 新着情報の表示件数 # → 0 とすると表示そのものを止め、右フレームには「使い方」の # ページが初期表示されます $infoview = 1; # 月内メッセージ一括表示の順番(「一括」ボタン押下時) # 0 : 古い順 # 1 : 新着順 $all_view = 1; # コントルールパネル(カレンダ下部)での西暦選択の幅 # 1 : 前後1年 # 2 : 前後2年 $ctr_year = 1; # カレンダ部・左右キーのタイプ # 0 : アイコン使用 # 1 : フォームボタン $lar_type = 0; # 左右アイコン(上記設定でアイコンを選択する場合) $IconR = "next.gif"; $IconL = "back.gif"; $IRL_W = 80; # 横幅 $IRL_H = 20; # 縦幅 # 書き込み案内アイコン @wri = ('pen.gif', 'heart.gif', 'leaf.gif', 'lamp.gif'); # bodyタグ指定 $bg = ""; # 壁紙 (http://からファイルを指定) $bc = "#000000"; # 背景色EBF0EC $tx = "#555555"; # 文字色 $lk = "#0000FF"; # リンク色(未訪問) $vl = "#800080"; # リンク色(訪問済) $al = "#FF0000"; # リンク色(訪問中) # 週表示 @week = ('日','月','火','水','木','金','土'); # 任意アイコン(上段:ファイル名,下段:アイコン名) # → 半角スペースで区切る # → 上下は必ずペアで指定 $icon1 = 'hare.gif kumori.gif ame.gif yuki.gif 0.gif 100.gif cafe.gif cake.gif ganba.gif hana.gif home.gif tenten.gif tree.gif'; $icon2 = '晴れ くもり 雨 雪 0点 100点 コーヒー ケーキ がんばりましょう はなまる おうち … 木'; ## --- ココから下の設定は通常は触れないで下さい --- ## # 祝日1:特定月日(2桁+2桁で記述) @SpeDay = ('0101','0211','0321','0429','0503','0504','0505','0915','0923','1103','1123','1223'); # 祝日2:何月の第何月曜日か? # → 成人の日 / 体育の日 / 海の日 %SpeDay = (1,2, 10,2, 7,3); #------------------------------------------------- # 設定完了 #------------------------------------------------- #####テンプレートファイルの読み出し &temp; # アイコン再定義 @icon1 = split(/\s+/, $icon1); @icon2 = split(/\s+/, $icon2); # 基本処理 &decode; if ($mode eq "write") { &write; } elsif ($mode eq "admin") { &admin; } elsif ($mode eq "main") { &main; } elsif ($mode eq "howto") { &howto; } elsif ($mode eq "check") { ✓ } elsif ($mode eq "calen") { &calen; } &calen; #------------------------------------------------- # フレーム #------------------------------------------------- sub frame { print "Content-type: text/html\n\n"; print <<"EOM"; $title EOM exit; } #------------------------------------------------- # メイン画面2 #------------------------------------------------- sub main2 { local($newlog,$wkey,$Y,$M,$D,$Day,$sub,$msg,$icon,$wri,$ymd,$w,@data); # 新着ログを定義 $newlog = $logdir . 'new.dat'; # ログ表示指定初期表示 if ($in{'action'} eq "view") { if ($in{'action'} eq "view") { ($Day,$sub,$msg,$icon,$wri,$Y) = &view; $month = $M; $year = $Y; } print ""; print "
"; print "  "; print "$Y/$M/$D ($week[$in{'w'}])\n"; print "   「$sub」\n

\n"; # アイコン表示の場合 if ($icon ne "") { print "\"$icon\"\n"; } $msg = &tagview($msg); print "$msg

\n"; # 月内一括表示 } elsif ($in{'action'} eq "allview") { $in{'YM'} =~ s/\D//g; if ($in{'YM'} =~ /^(\d{4})(\d{2})$/) { $Y=$1; $M=$2; } else { &error("年月の指定が不正です"); } # ログを定義 $logfile = "$logdir$in{'YM'}\.txt"; # ログの存在をチェック unless (-e $logfile) { print "この月には書き込みがありません\n"; print "\n"; exit; } @data=(); open(IN,"$logfile") || &error("Open Error: $logfile"); while () { ($Day,$sub) = split(/<>/); next if ($sub eq ""); s/\n//g; if ($all_view) { unshift(@data,$_); } else { push(@data,$_); } } close(IN); print "▼ $Y年$M月のMeditation\n
\n"; foreach (@data) { ($Day,$sub,$msg,$icon,$wri) = split(/<>/); # 曜日を取得 $wkey = &getweek($Day, $Y, $M); print ""; print "
"; print "  "; print "$Y/$M/$Day ($week[$in{'w'}])\n"; print "   「$sub」\n

\n"; if ($icon ne "") { print "\"$icon\" "; } $msg = &tagview($msg); print "$msg

\n

\n"; } # 新着情報 } elsif ($infoview > 0 && -e $newlog) { print "\n"; print "
NEW\n"; $i=0; open(IN,"$newlog") || &error("Open Error: $newlog"); while () { $i++; ($ymd,$sub,$msg,$w,$icon) = split(/<>/); if ($ymd =~ /^(\d{4})(\d{2})(\d{2})/) { $date="$1/$2/$3"; } print "$date($week[$in{'w'}])\n"; print "   「$sub」

"; if ($infoview <= $i) { last; } } close(IN); $msg = &tagview($msg); if($icon ne ""){ print "\"$icon\"\n"; } print "$msg
\n"; } else { &howto('DMY'); } print <
[ホームに戻る] [利用方法] [管理用]
EOM } #------------------------------------------------- # カレンダ表示 #------------------------------------------------- sub calen { if ($in{'year'}) { $year = $in{'year'}; } if ($in{'mon'}) { $month = $in{'mon'}; } else { $month = $mon; } local($year2) = $year; &header_calen; print "
\n"; &table("", "$month"); $pre = $month - 1; $Y1 = $year; if ($pre < 1) { $pre += 12; $Y1 = $year - 1; } $next = $month + 1; $Y2 = $year; if ($next > 12) { $next -= 12; $Y2 = $year + 1; } # print "\n"; ## コントロールキー表示 # アイコンの場合 $width_t =$width * 7; if (!$lar_type) { print "\n"; print "
\n"; print ""; print "←$pre月\n"; print ""; print "$next月→
\n"; # フォームボタン } else { print "\n"; print "\n"; print "
\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "
\n"; } if ($ctr_year == 1) { @ctr = ($year2-2, $year2-1, $year2); } else { @ctr = ($year2-2, $year2-1, $year2, $year2+1, $year2+2); } # 直接移動ボタン print "\n"; print "
\n"; print "
\n"; print "\n"; print "\n
\n"; print "
\n"; print "\n"; print "\n"; print "\n"; $month2 = sprintf("%02d", $month); print "\n"; print "
\n"; print "
\n"; &main2; print "
\n"; print "$end\n"; exit; } #------------------------------------------------- # カレンダ表示 #------------------------------------------------- sub table { local($month) = $_[1]; if ($_[0] eq "FWD") { $month--; if ($month < 1) { $month += 12; $year--; } } if ($month == $mon && $thisyear == $year) { $thiskey=1; } $lmon = sprintf("%02d", $month); open(IN,"$logdir$year$lmon\.txt"); @lines = ; close(IN); print < $year年 $month月 EOM foreach (0 .. 6) { if ($_ == 0) { $color = $sun_color; } elsif ($_ == 6) { $color = $sat_color; } else { $color = $nor_color; } print "$week[$_]\n"; } print "\n"; # 複雑怪奇なる「ツェラーの公式」を実行し曜日を取得計算 $wkey = &getweek(1,$year,$month); $lastday = (31,28,31,30,31,30,31,31,30,31,30,31) [$month-1] + ($month == 2 && (($year % 4 == 0 && $year % 100 != 0) || $year % 400 == 0)); $i=0; # 曜日 (ex. 0:日曜, 1:月曜, ... ) $j=1; # 月曜の第何週か $k=1; # 日 $flag=0; $spe_flag=0; # 振替休日フラグ foreach (1 .. 42) { # 色指定 if ($i == 0) { $color = $sun_color; } elsif ($i == 6) { $color = $sat_color; } else { $color = $nor_color; } if ($wkey == $i) { $flag=1; } if ($lastday < $k) { $flag=2; } if ($flag == 2 && $i == 0) { last; } if ($i == 0) { print ""; } if (!$flag) { print " - \n"; } elsif ($flag == 2) { print " - \n"; } else { if ($thiskey && $mday == $k) { print ""; } else { print ""; } $lday = sprintf("%02d", $k); $this = $lmon . $lday; # 振替休日 if ($spe_flag) { $spe_flag=0; $color = $spe_color; } else { # 祝日1 foreach $x (@SpeDay) { if ($x eq $this) { if ($i == 0) { $spe_flag=1; } $color = $spe_color; last; } } # 祝日2 while (($N, $V) = each(%SpeDay)) { if ($month == $N && $i == 1 && $j == $V) { $color = $spe_color; last; } } } print "";## print "$k
"; ($Day,$sub,$msg,$ico,$wri) = split(/<>/, $lines[$k-1]); if ($sub ne "") { print ""; } # else { $DAY = $k; } print "\n"; } if ($flag && $i == 1) { $j++; } $i++; if ($flag) { $k++; } if ($i == 7) { print "\n"; $i=0; } } print "\n"; } #------------------------------------------------- # 日記ログ読出 #------------------------------------------------- sub view { local($Day,$sub,$msg,$ico,$wri); if ($in{'YMD'} =~ /^(\d{4})(\d{2})(\d{2})$/) { $Y=$1; $M=$2; $D=$3; } else { &error("年月日の数値が不正です"); } $logfile = "$logdir$Y$M\.txt"; open(IN,"$logfile") || &error("Open Error: $logfile"); while () { chop; ($Day,$sub,$msg,$ico,$wri) = split(/<>/); if ($Day == $D) { last; } } close(IN); return ($Day,$sub,$msg,$ico,$wri,$Y); } #------------------------------------------------- # 書込画面 #------------------------------------------------- sub write { if ($in{'YMD'} =~ /^(\d{4})(\d{2})(\d{2})$/) { $Y=$1; $M=$2; $D=$3; } else { &error("年月日の数値が不正です"); } # パスワードチェック if ($in{'pass'} eq "") { $flag=0; open(IN,"$logdir$Y$M\.txt"); while () { local($day,$sub,$msg) = split(/<>/); if ($D == $day && $sub ne "") { $flag=1; last; } } close(IN); &header; print "[前画面に戻る]
\n"; print "
処理対象 : $Y年$M月$D日
\n"; print "

- パスワードを入力してください -\n"; print "

\n"; print "\n"; print "\n"; print "\n"; if ($flag) { print "\n"; } print "\n"; print "
\n"; print "
\n$end\n"; exit; } elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); } # 書き込み処理 if ($in{'action'} eq "regist") { $flag=0; if ($in{'sub'} eq "") { &error("題名が入力されていません"); } if ($in{'message'} eq "") { &error("コメントが入力されていません"); } if ($in{'wrap'} ne "on") { $in{'message'} =~ s/
//ig; } # ログファイルを定義 $logfile = "$logdir$Y$M\.txt"; # ログが存在するとき if (-e $logfile) { @new=(); open(IN,"$logfile") || &error("Open Error: $logfile"); while () { ($Day,$sub,$msg,$icon,$wri) = split(/<>/); if ($D == $Day) { $_="$Day<>$in{'sub'}<>$in{'message'}<>$in{'icon'}<>$in{'wri'}<>\n"; } push(@new,$_); } close(IN); # ログが存在しないとき } else { $flag=1; @new=(); foreach (1 .. 31) { $_ = sprintf("%02d", $_); if ($D eq $_) { $log = "$_<>$in{'sub'}<>$in{'message'}<>$in{'icon'}<>$in{'wri'}<>\n"; } else { $log = "$_<><><><><>\n"; } push(@new,$log); } } open(OUT,">$logfile") || &error("Write Error: $logfile"); print OUT @new; close(OUT); # 新規ログのパーミッションを666へ if ($flag) { chmod(0666,$logfile); } # 新着ログ更新処理 if ($infoview > 0) { $newlog = $logdir . 'new.dat'; unless (-e $newlog) { $new_flag=1; $new2[0] = "$in{'YMD'}<>$in{'sub'}<>$in{'message'}<>$in{'w'}<>$in{'icon'}<>\n"; } else { open(IN,"$newlog") || &error("Open Error: $newlog"); @lines = ; close(IN); @new2=(); $flag2=0; foreach (@lines) { ($ymd,$sub,$msg,$w,$icon) = split(/<>/); if ($in{'YMD'} == $ymd) { $flag2=1; $_ = "$ymd<>$in{'sub'}<>$in{'message'}<>$w<>$in{'icon'}<>\n"; } elsif (!$flag2 && $in{'YMD'} > $ymd) { $flag2=1; push(@new2,"$in{'YMD'}<>$in{'sub'}<>$in{'message'}<>$in{'w'}<>$in{'icon'}<>\n"); } push(@new2,$_); } if (!$flag2) { push(@new2,"$in{'YMD'}<>$in{'sub'}<>$in{'message'}<>$in{'w'}<>$in{'icon'}<>\n"); } } # 更新 while ($infoview < @new2) { pop(@new2); } open(OUT,">$newlog") || &error("Write Error: $newlog"); print OUT @new2; close(OUT); # 新規ログのパーミッションを666へ if ($new_flag) { chmod(0666,$newlog); } } # 完了メッセージ &header; print "

正常に書き込みを受理しました

\n"; print "
\n"; print "日付: $Y年$M月$D日
\n"; print "題名: $in{'sub'}

\n"; if ($in{'icon'} ne "") { print "\"$in{'icon'}\"\n"; } print "$in{'message'}\n
\n

\n"; print "

\n"; print "
\n"; print "
\n$end\n"; exit; # ログ削除 } elsif ($in{'action'} eq "del") { $logfile = "$logdir$Y$M\.txt"; @new=(); open(IN,"$logfile") || &error("Open Error: $logfile"); while () { local($day,$sub,$msg,$icon) = split(/<>/); if ($D eq $day) { $_="$day<><><><><>\n"; } push(@new,$_); } close(IN); open(OUT,">$logfile") || &error("Write Error: $logfile"); print OUT @new; close(OUT); # 新着ログ if ($infoview > 0) { $newlog = $logdir . 'new.dat'; open(IN,"$newlog") || &error("Open Error: $newlog"); $flag=0; @new=(); while () { local($ymd,$sub,$msg,$icon) = split(/<>/); if ($in{'YMD'} == $ymd) { $flag=1; next; } push(@new,$_); } close(IN); # 該当ログのある場合は新着ログ更新 if ($flag) { open(OUT,">$newlog") || &error("Write Error: $newlog"); print OUT @new; close(OUT); } } # 完了メッセージ &header; print "

削除処理が完了しました

\n"; print "
\n"; print "
\n"; print "
\n$end\n"; exit; # ログ修正の場合 } elsif ($in{'action'} eq "edit") { local($flag)=0; open(IN,"$logdir$Y$M\.txt") || &error("Open Error: $logdir$Y$M\.txt"); while () { chop; ($day,$sub,$msg,$icon,$wri) = split(/<>/); if ($day == $D) { $flag=1; last; } } close(IN); if (!$flag) { &error("該当の記事が見つかりません"); } $msg =~ s/
/\r/g; } &header; print <<"EOM"; [前画面に戻る]

書込みフォーム

  • HTMLタグの使用は可能\です。
  • タグを使用する場合には「改行は有効」のチェックを外したほうが無難です。
  • 半角カナは使用しないで下さい。
  • 年月日$Y年$M月$D日
    タイトル
    カレンダ表\示 EOM # カレンダアイコン if ($wri eq "") { $wri = 0; } foreach (0 .. $#wri) { if ($wri == $_) { print "", "\n"; } else { print "", "\n"; } } # 本文アイコン print "
    本文アイコン
    コメント:    改行は有効
    写真は<img src=medi-photo/ファイル名.jpg> に入れてください

    $end EOM exit; } #------------------------------------------------- # 管理者画面 #------------------------------------------------- sub admin { if ($in{'pass'} eq "") { &header; print "

    パスワードを入力してください

    \n"; print "
    \n"; print "\n"; print "\n"; print "
    \n"; print "
    \n$end\n"; exit; } elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); } # 一括削除 if ($in{'del'}) { # 削除情報 @del = split(/\0/, $in{'del'}); &header; print "
    \n"; foreach (@del) { if (unlink ("$logdir$_.txt")) { print "削除完了 : $_
    \n"; } else { print "削除できません : $_
    \n"; } } # 新着ログより削除記事を排除 if ($infoview > 0) { $newlog = $logdir . 'new.dat'; $flag=0; @new=(); open(IN,"$newlog") || &error("Open Error: $newlog"); while () { s/^(\d{6})/$ym=$1/e; $f=0; foreach $del (@del) { if ($ym == $del) { $flag=1; $f++; last; } } if (!$f) { push(@new,$_); } } close(IN); # 更新 if ($flag) { open(OUT,">$newlog") || &error("Write Error: $newlog"); print OUT @new; close(OUT); } } print "
    \n"; print "
    \n"; print "
    \n$end\n"; exit; } else { # ログディレクトリを読み取り opendir(DIR,"$logdir") || &error("OpenDir Error: $logdir"); @data = readdir(DIR); closedir(DIR); } &header; print <<"EOM"; [戻る]
    管理モード

    - チェックを入れて「削除する」を押すと月次ファイル全体を削除します -

    EOM $all=0; $size=0; foreach (@data) { if (/^(\d{4})(\d{2})\.txt$/) { # ファイルサイズ $size = -s "$logdir$_"; print ""; print "\n"; $all += $size; } } print "
    削除年月容量
    $1年$2月$size Bytes

    \n"; print "

    ログサイズ計:$all Bytes\n"; print "

    \n$end\n"; exit; } #------------------------------------------------- # 利用方法表示 #------------------------------------------------- sub howto { if ($_[0] eq "") { &header; } print <<"EOM";
    使い方
    • 初期画面では当月のカレンダが表\示されます。
    • 書き込み内容のある日にはアイコンが表\示されますので、このアイコンをクリックすると内容を読むことができます。
    • 下部にあるフォームボタンにて、「年月」を選択して「移動」を押すと、直接その年月のカレンダへ移動することができます。また「一括」を押すとこの年月の書き込み内容をすべて表\示します。
    EOM if ($_[0] eq "") { print "

    \n"; print "
    \n$end\n"; exit; } } #------------------------------------------------- # デコード処理 #------------------------------------------------- sub decode { local($buf, $key, $val); if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{'QUERY_STRING'}; } %in=(); foreach ( split(/&/, $buf) ) { ($key, $val) = split(/=/); $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; # シフトJISコード変換 &jcode'convert(*val, "sjis", "", "z"); # 禁止記号 $val =~ s/&/&/g; $val =~ s/"/"/g; $val =~ s//>/g; # 改行処理 if ($key eq "message") { $val =~ s/\r\n/
    /g; $val =~ s/\n/
    /g; $val =~ s/\r/
    /g; } else { $val =~ s/\r//g; $val =~ s/\n//g; } $in{$key} .= "\0" if (defined($in{$key})); $in{$key} .= $val; } $mode = $in{'mode'}; $in{'YMD'} =~ s/\D//g; $in{'YM'} =~ s/\D//g; # 日時の取得 $ENV{'TZ'} = "JST-9"; ($mday,$mon,$year) = (localtime(time))[3..5]; $year += 1900; $mon++; $thisyear = $year; } #------------------------------------------------- # HTMLヘッダ #------------------------------------------------- sub header { $headflag=1; print "Content-type: text/html\n\n"; print <<"EOM"; $top EOM # # # # # # #$title # # if ($bg) { # print "\n"; # } else { # print "\n"; # } } #------------------------------------------------- # HTMLヘッダカレンダー用 #------------------------------------------------- sub header_calen { $headflag=1; print "Content-type: text/html\n\n"; print <<"EOM"; $top EOM # # # # # # #$title # # if ($bg) { # print "\n"; # } else { # print "\n"; # } } #------------------------------------------------- # エラー処理 #------------------------------------------------- sub error { &header if (!$headflag); print "

    ERROR !

    \n"; print "$_[0]\n"; print "
    \n$end\n"; exit; } #------------------------------------------------- # ツェラーの公式 #------------------------------------------------- sub getweek { local($day, $year, $month) = @_; # $year = 年; # 4桁 # $month = 月; # 1-12 --> 1月は1 if ($month == 1 || $month == 2) { $year--; $month += 12; } int ($year + int ($year/4) - int ($year/100) + int ($year/400) + int ((13*$month+8)/5) + $day) % 7; } #------------------------------------------------- # タグ復元 #------------------------------------------------- sub tagview { local($_) = @_; s/<//g; s/"/"/g; s/&/&/g; $_; } #------------------------------------------------- # チェックモード #------------------------------------------------- sub check { &header; print <Check Mode
      EOM if (-d $logdir) { print "
    • ログディレクトリのパス:OK\n"; if (-r $logdir && -w $logdir && -x $logdir) { print "
    • ログディレクトリのパーミッション:OK\n"; } else { print "
    • ログディレクトリのパーミッション:NG → $logdir\n"; } } else { print "
    • ログディレクトリのパス:NG → $logdir\n"; } print <バージョン:$ver
    $end EOM exit; } #------------------------------------------------- # テンプレート読み出し #------------------------------------------------- sub temp{ open(TEMPLATE,"$template") || &error("Can't open $template"); local($/) = undef; $tmp =