Perlコーディング初心者質問スレ Part 49
レス数が900を超えています。1000を超えると表示できなくなるよ。
0935911
2006/06/25(日) 22:54:37ID:???print "content-type:text/html;charset=euc-jp\n\n";
my %access;
# どのページにアクセスしてきたか
$access{p} = ( p => "index" );
# アクセス人物のIPアドレス
$access{ip} = $ENV{'REMOTE_ADDR'};
# アクセス時刻の記録
$access{time} = sprintf "%04s%02s%02s%02s%02s%02s",sub{shift()+1900,shift()+1,@_}->(@{[gmtime(time+32400)]}[5,4,3,2,1,0]);
# アクセス人物のブラウザ
$access{browser} = $ENV{'HTTP_USER_AGENT'};
# 書込み処理
open FH,"+>access.log";
flock FH,2;
my @line = <FH>;
my @new_line = join ",",@access{qw/p ip time browser/};
for ( my $i=0; $i<@line; $i++ ){
my @temp = split /,/,@line;
if ( $access{ip} ne $temp[1] and 1000000000 > $access{time} - $temp[2] ){
push (@new_line,join (",",@temp));
}
}
while ( <@new_line> ){ print $_,"\n" }
while ( <@new_line> ){ print FH $_,"\n" }
close FH;
ブラウザでは普通に出力され、ファイルには変な改行が加えられて書き込まれます。
レス数が900を超えています。1000を超えると表示できなくなるよ。