#! /usr/local/bin/perl -w # # calendarErrCheck.cgi -- カレンダーの生成(エラー チェック値あり) # # sample file name: calendarErrCheck.cgi use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use lib "/home/fukazawa/myperl/lib"; use Calendar::Simple; my $q = new CGI; # create new CGI object my $thisMon = (localtime)[4] + 1; my $thisYr = (localtime)[5] + 1900; my $mon = $q->param("month"); my $yr = $q->param("year"); my $err = ''; if (not defined $mon) { $mon = $thisMon; } elsif ($mon =~ /\D/ or $mon < 1 or 12 < $mon) { $err .= "入力された月 $mon が正しくありません"; $mon = $thisMon; } if (not defined $yr) { $yr = $thisYr; } elsif ($yr =~ /\D/) { $err .= "
入力された年 $yr が正しくありません"; $yr = $thisYr; } print $q->header(-charset=>'EUC-JP'), # HTTP ヘッダーの作成 $q->start_html( -title =>"カレンダー:$yr年$mon月", -lang =>'ja-JP', -charset => 'EUC-JP'), $q->table($q->Tr([ $q->th(['日', '月', '火', '水', '木', '金', '土', ]), map {$q->td(&dateAdjust($_))} calendar($mon, $yr), ])), $q->start_form, $q->textfield(-name=>'year', -default=>$yr, -size=>4), '年', $q->textfield(-name=>'month', -default=>$mon, -size=>2), '月', $q->submit('表示'), $q->endform, $err, $q->end_html; # end the HTML sub dateAdjust { [ map { if (not defined($_)) { '  '; } elsif ($_ < 10) { ' '.$_; } else { $_; } } @{(shift)} ] }