表示がくずれるので、空白2文字を全角空白にしていることに注意。
use strict;
use warnings;
use utf8;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use CGI::Pretty;
use HTML::Template;
my @week_caps = (
{ jp => '日', class => 'sunday' },
{ jp => '月', class => 'monday' },
{ jp => '火', class => 'tuesday' },
{ jp => '水', class => 'wednesday' },
{ jp => '木', class => 'thursday' },
{ jp => '金', class => 'friday' },
{ jp => '土', class => 'saturday' }
);
my @calendar = (
[ '', '', 1, 2, 3, 4, 5 ],
[ 6, 7, 8, 9, 10, 11, 12 ],
[ 13, 14, 15, 16, 17, 18, 19 ],
[ 20, 21, 22, 23, 24, 25, 26 ],
[ 27, 28, 29, 30, 31, '', '' ]
);
my @month_weeks = ();
for my $week (@calendar) {
my @wdays = ();
for my $i ( 0 .. 6 ) {
push @wdays, { class => $week_caps[$i]->{class}, day => $week->[$i] };
}
push @month_weeks, { WDAYS => \@wdays };
}
my $template = HTML::Template->new( filehandle => *DATA );
$template->param(
WEEK_CAPS => \@week_caps,
MONTH_WEEKS => \@month_weeks
);
my $q = CGI->new();
print $q->header( -charset => 'UTF-8' ),
$q->start_html( -title => "TEST", -lang => 'ja', ),
$template->output,
$q->end_html;
__DATA__
<table>
<tr>
<TMPL_LOOP NAME=WEEK_CAPS>
<th class="<TMPL_VAR NAME=class>"><TMPL_VAR NAME=jp></th>
</TMPL_LOOP>
</tr>
<TMPL_LOOP NAME=MONTH_WEEKS>
<tr>
<TMPL_LOOP NAME=WDAYS>
<td class="<TMPL_VAR NAME=class>"><TMPL_VAR NAME=day></td>
</TMPL_LOOP>
</tr>
</TMPL_LOOP>
</table>
お礼
ありがとうございます。おかげで正常に出力できる様になりました。 休み前に閲覧はできていたのですが、キーボード等テスト環境がそろわずお礼が遅れてしまいました。