<1> new.pl | …… 自動NEW表示用スクリプト |
<2> new0.gif | …… もっとも新しいを表現するGIF |
<3> new1.gif | …… 少し古くなったを表現するGIF |
<4> new2.gif | …… 更に古くなったを表現するGIF |
<5> new.htm | …… 自動NEW表示実行用HTML例 |
本スクリプトはSSIを利用するため、SSIの実行環境設定を行う。
これらはすべて同じディレクトリに転送すること。
new.plとnew.htmはASCIIモードで転送すること。
GIFファイルはBINARYモードで転送すること。
$ chmod 705 new.pl [Enter] $ chmod 604 *.gif [Enter] $ chmod 604 new.htm [Enter]
$ ./new.pl new.htm [Enter] 今日(12月17日(木))の06時06分に更新! やったぁ!実行して上記のような表示が出るか確認する。
ページを表示して、正しく更新日が表示されればよい。
$file = $ARGV[0];コマンド実行時の引数を得て、ファイル名とする。「./new.pl abc.htm」が実行されたら「abc.htm」が対象のファイル名となる。
$f = (stat($file))[9];指定されたファイルの更新時刻を得る。statはファイル情報を得るためのperlの関数。10番目が更新時刻となっている。
$tt = int(($t + 32400) / 86400); $ff = int(($f + 32400) / 86400); $a = $tt - $ff;$tには、1970年1月1日から現在までの秒数が、$fには1970年1月1日からファイルが作成された日時までの通算秒数が入っている。この両者を通算日数に直す。どちらの値も同じならば、ファイル更新は今日行われたことになり、差が1ならば昨日更新されたことになる。
$tt = int(($tt + 4) / 7); $ff = int(($ff + 4) / 7); $b = $tt - $ff;上記と同様に、今度は週が同じかどうか調べる。基準日の1970年1月1日は木曜なので、4を加えて週の始まり(日曜)との差を補正している。
if ($b == 0) { $W = "今週"; } elsif ($b == 1) { $W = "先週"; } elsif ($b == 2) { $W = "先々週"; } else { $W = "$b週前"; }$bを判断して、いつの週に更新したかを出力準備。
if ($a == 0) { print "今日($D)の$Tに更新! やったぁ! $new0"; } elsif ($a == 1) { print "昨日($D)の$Tに更新! ちょっと見てってぇ! $new0"; } elsif ($a < 7) { print "$a日前($D)の$Tに更新! 見て見てー! $new0"; } elsif ($a < 14) { print "$Wの$Dに更新したんだってば $new1"; } elsif ($a < 30) { print "$Dに更新したナリ $new2"; } else { print "$Y $Dに更新"; }$aを判断して、いつの日に更新したかを出力する。