カレンダー表示CGIサンプル
スポンサードリンク
友達の女の子が、日記風読み物を書いていて、これにカレンダーをつけたいんだよねーていうミッション。
最初は、
my $cal = `cal`;
とかしてお茶濁そうと思ったけれども、これ cal コマンド入っていないとだめで、Windows だとダメっぽげです。
つうわけで、
Calendar::Simple - シンプルなカレンダーを作る為のPerl拡張 [perldoc.jp]
をみて作ってみました。
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
my $q = CGI->new();
my $year = $q->param('year' ) || (localtime)[5] + 1900;
my $month = $q->param('month') || (localtime)[4] + 1;
print $q->header( -type => 'text/html',
-charset => 'UTF-8',
);
print $q->start_html(
-lang => 'ja_JP',
-encoding => 'UTF-8',
),
$q->start_pre,
_calendar(
{ year => $year,
month => $month,
base_url => 'http://www.example.com/cgi-bin/foo.cgi',
}
),
$q->end_pre,
$q->end_html,
;
exit 1;
sub _calendar {
require Calendar::Simple;
my $param = shift;
my $year = $param->{year };
my $month = $param->{month };
my $url = $param->{base_url};
my $cal = Calendar::Simple::calendar( $month, $year );
my $tmp_cal;
foreach (@$cal) {
push @$tmp_cal,
join( ' ',
map {
$_
? sprintf "<a href=\"%s?date=%4d%02d%02d\">%2d</a>",
$url, $year, $month, $_, $_
: ' '
}
@$_
);
}
my $str_cal;
$str_cal .= "Su Mo Tu We Th Fr Sa\n";
$str_cal .= join("\n", @$tmp_cal);
$str_cal =~ s{\s+$}{}xmgo;
return $str_cal;
}
pre 要素で表示しているのは i-mode などで見ることを一応想定してみました。

▲僕の端末より画面が広いよ!
さて、作ってから判明したんですけれども、どうやら、彼女の作ってる日記風読み物、6月19日が2つあるんです。
どうしようw
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2157





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


そういうのって、たまに特異日があったりするんですぅ。
有名なところでは、数年前のQuark社が出したおまけのカレンダー。
市販ものでも、次の月になってわかる前月の日数が一日多かったはずだ~とか。
ま、対応してあげてください(ww)