06/09/28 08:36:06
my $ims = !$ENV{HTTP_IF_MODIFIED_SINCE}
? 0
: $ENV{HTTP_IF_MODIFIED_SINCE} =~ /^\w{3,}, {1,2}(\d{1,2})[ -](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[ -](\d{2,4}) {1,2}(\d{1,2}):(\d{2}):(\d{2}) GMT$/
? timegm($6, $5, $4, $1, index('JanFebMarAprMayJunJulAugSepOctNovDec', $2) / 3, $3)
: $ENV{HTTP_IF_MODIFIED_SINCE} =~ /^\w{3} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) {1,2}(\d{1,2}) {1,2}(\d{1,2}):(\d{2}):(\d{2}) (\d{4})$/
? timegm($5, $4, $3, $2, index('JanFebMarAprMayJunJulAugSepOctNovDec', $1) / 3, $6)
: 0;
if ($ims ge $st->mtime) {
print "Status: 304 Not Modified\n\n";
exit;
}
my $mtime = strftime('%a, %d %b %Y %T GMT', gmtime($st->mtime));
print <<EOT;
Content-Type: application/xml; charset=Shift_JIS
Last-Modified: $mtime
Cache-Control: max-age=5
<?xml version="1.0" encoding="Shift_JIS"?>
<text><![CDATA[
EOT
if (open(DAT, $fname)) {
while (<DAT>) {
print;
}
close(DAT);
}
print "]]></text>\n";