#!/usr/bin/perl use CGI qw(header); use HTML::CalendarMonthSimple; use strict; my %cal; while () { chomp; my ($file,$yyyy,$mm,$dd) = /([^.]+)\.(\d{4})(\d\d)(\d\d)/; push @{$cal{$yyyy}->{$mm}},{day => $dd, targ => $file}; } print header; for my $year (sort keys %cal) { for my $mon (sort keys %{$cal{$year}}) { my $cal = HTML::CalendarMonthSimple->new( month => $mon, year => $year, ); for (sort @{$cal{$year}->{$mon}}) { $cal->setdatehref(int($_->{day}), $_->{targ}); } print $cal->as_HTML(); } } __DATA__ file5.20030227 file2.20020802 file1.20020801 file4.20021015 file3.20020803 #### #!/usr/bin/perl -w use strict; use CGI; use Calendar::Simple; # HTML::CalendarMonthSimple seems even better suited # HTML::CalendarMonthSimple is a Perl module for # generating, manipulating, and printing a HTML calendar # grid for a specified month. It is intended as a faster # and easier-to-use alternative to HTML::CalendarMonth." my $rqry = new CGI(); print CGI::header(); my @months = qw(January February March April May June July August September October November December); my $mon = shift || (localtime)[4] + 1; my $yr = shift || ((localtime)[5] + 1900); my @month = calendar($mon, $yr); print ''; print "$months[$mon -1] $yr\n\n"; print ''; print '' .''; foreach (@month) { print ''; print map{""} @$_; print ''; } print "
Su Mo Tu WeTh Fr Sa
$_
"; print "
// or with pre-tag:\n";
print "$months[$mon -1] $yr\n";
print "Su Mo Tu We Th Fr Sa\n";
foreach (@month) {
print map { $_ ? sprintf("%2d ", $_) : '   ' } @$_;
print "\n";
}

print '
';