#!/usr/bin/perl -T use CGI qw/:standard/; use DateTime; use File::Basename; use File::Find; use File::Spec::Functions; use HTML::CalendarMonth; use HTML::AsSubs; use strict; use warnings; my $now = DateTime->now(time_zone => 'Asia/Shanghai'); my $yesterday = $now->subtract(days => 1); my $year = $yesterday->year; my $c = HTML::CalendarMonth->new(month => $yesterday->month, year => $year, locale => 'zh'); $c->item($c->year, $c->month)->wrap_content(font({size => '+2'})); my $month = sprintf '%02d', $yesterday->month; my $dir = catdir('.', $year, $month); my %daily_data; find({ wanted => sub { return unless -f $File::Find::name; my $name = basename $File::Find::name; if ($name =~ m{^(\d{2})\.html}) { my $day = $1; $daily_data{$day} = "$year/$month/$day.html"; } }, no_chdir => 1, }, $dir); for my $day (keys %daily_data) { my ($d) = $day =~ /^0*([1-9][0-9]?)$/; $c->item($d)->wrap_content(a({href=>$daily_data{$day}})); } print header(-type=>'text/html', -charset=>'UTF-8'), start_html(-title=>'历史数据', -lang=>'zh-CN'), $c->as_HTML, end_html;