Last-modified について

SSI と Last-modified

SSI と Last-Modified・Content-length ヘッダに書いてあるみたいです。

CGI と Last-modified

ログファイルなどの最終更新時刻を HTTP ヘッダにそれなりの書式で出す。

Perl 5.004 以降

File::stat を使うとこんな感じ。 ソースも置いておく

#!/usr/bin/env perl

use 5.004;
use File::stat;

my $fileName = "./../lastmodified.html";
my ($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(stat($fileName)->mtime);
my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @days = qw(Sun Mon Tur Wed Thu Fri Sat);
my $lastModified = 
  sprintf("Last-Modified: %3s, %d %3s %4d %02d:%02d:%02d GMT",
	  $days[$wday],$mday,$months[$mon],$year+1900,$hour,$min,$sec);

print "Content-type: text/plain\n";
print $lastModified . "\n";
print "\n";

print $lastModified . "\n";

Perl 5.004 より古いバージョン

File::stat を使わないとこうなる。 もちろん Perl 5.004 以降でも動く。 ソースも置いておく

#!/usr/bin/env perl

my $fileName = "./../lastmodified.html";
my @fileInfo = stat($fileName);
my ($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime($fileInfo[9]);
my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @days = qw(Sun Mon Tur Wed Thu Fri Sat);
my $lastModified = 
  sprintf("Last-Modified: %3s, %d %3s %4d %02d:%02d:%02d GMT",
	  $days[$wday],$mday,$months[$mon],$year+1900,$hour,$min,$sec);

print "Content-type: text/plain\n";
print $lastModified . "\n";
print "\n";

print $lastModified . "\n";

とりあえずてきとーなライブラリ

lastmodified.pl というライブラリにしてみた。

# 
# License: LGPL
# Version: 0.0.1
# Author: IWAI, Masaharu <iwaim@geocities.co.jp>
# URL: <http://everybody.good-day.net/~iwai/memo/network/lm/lastmodified.pl>
# Time-stamp: <02/02/15 10:34:07 masa>
#
##################
# sample:
##################
#
#  require "/lastmodified.pl";
#
#  print  http_last_modified($filename) . "\n";
#
##################
sub last_modified  {
    my $fileName = $_[0];
    if ( $fileName eq "") {
	print STDERR "No argument.\n";
	exit;
    }
    unless (-e $fileName) {
	print STDERR "File not found.\n";
	exit;
    }
    unless ((-f $fileName) or (-l $fileName)) {
	print STDERR "It isn't a file.\n";
	exit;
    }
    my @fileInfo = stat($fileName);
    my ($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime($fileInfo[9]);
    my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
    my @days = qw(Sun Mon Tur Wed Thu Fri Sat);
    my $lastModified = 
	sprintf("%3s, %d %3s %4d %02d:%02d:%02d GMT",
		$days[$wday],$mday,$months[$mon],$year+1900,$hour,$min,$sec);
    
    return $lastModified;
}

sub http_last_modified {
    my $fileName = $_[0];
    my $lastmodified =  last_modified($fileName);
    return "Last-Modified: $lastmodified";
}

1;