#!/usr/bin/perl use warnings; use strict; use CGI::Simple; use File::Find; use File::stat; use File::Basename qw(dirname); use POSIX; my $q = CGI::Simple->new({num=>100}); my $cat_dir = dirname($ENV{SCRIPT_FILENAME}); my %pics; find(sub { if (/\.html$/) { $pics{$_} = stat($_); } }, $cat_dir); print $q->header(-status => 200); print < Cat Pictures!
Cat Pictures!
EOF my $num = 0; my $previous_date = ''; for my $pic (sort {$pics{$b}->ctime <=> $pics{$a}->ctime} keys %pics) { my $this_date = POSIX::strftime('%Y-%m-%d',localtime($pics{$pic}->ctime())); if ($previous_date ne $this_date){ print "

$this_date

\n"; $previous_date = $this_date; } my $basename = $pic; $basename =~ s/\.html//; print <$basename EOF $num++; last if $num > 30; } print <
A silly CGI script
EOF sub error { my ($q,$error,$text) = @_; $text //= ''; print $q->header(-status => $error); print "

$error: $text

"; exit 0; }