スクリプトのモジュール追加
(2004.02.02)
Homeの「yyyy年mm月dd日更新……」という表記を自動生成できないかなと考えて、フィルター形式のモジュールを作ってみました。
やることは、スクリプトの実行開始日時を埋め込むことです。
PpDate.pmというモジュールはこんな感じ。
(ここから)
# $VER: module PpDate for ppmod. 1.0, 2004/01/25
package PpDate;
sub init
{
my($child) = @_;
main::putmessage('verbose', "module load.");
main::putmessage('verbose', "config = '$child->{pathname}'");
push(@main::filters, \&filter_date);
}
sub filter_date
{
my($junk, @outhtml) = @_;
my $state = 0;
my $linebuff;
foreach $linebuff (@outhtml)
{
if (0 == $state && '<!-- ppmod PpDate' ne $linebuff)
{
next;
}
elsif (0 == $state)
{
$state++;
$linebuff = '';
}
elsif (1 == $state && '-->' eq $linebuff)
{
$state = 0;
$linebuff = '';
}
elsif (1 == $state)
{
my @timeval = localtime($^T);
local $yyyy = sprintf('%04d', 1900 + $timeval[5]);
local $mm = sprintf('%02d', 1 + $timeval[4]);
local $dd = sprintf('%02d', $timeval[3]);
$linebuff = eval('"' . $linebuff . '"');
}
}
return @outhtml;
}
1;
(ここまで)
そして、更新日時(本当はスクリプトの実行開始日時)を埋め込みたい所に
<!-- ppmod PpDate
$yyyy年$mm月$dd日更新、02月第1週更新予定<BR>
-->
と入れておけばOK。あーやっぱりモジュール化しておいてよかった。