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