#!/usr/bin/perl use File::Find; # threads.dat を取り戻すツール # # styx.cgiを置いているとこに置いて、アクセスすると # $OUTFILEで指定した名前で出来てるから、それをthreads.datに変えてupする # 文字コード注意。EUCです。 # スレのステータスは再現できません。全てデフォルトになります。 # スレの並びもログファイルの最終更新日時で決めるので、sage進行とかしていたスレがあがってしまいます。 $LOGDIR = './logs'; # ログディレクトリ $LOGFILE = 'bbs.dat'; # $OUTFILE = 'output.txt'; # このファイル名でつくる、上書きとか確認しないから、適当に仮の名前に @dat; $cnt; print "Content-type: text/plain\n\n"; find( \&search, "$LOGDIR" ); my @result = sort { $b->[1] <=> $a->[1] } @dat; open( FILE,">$OUTFILE" ) or die "can't open"; for ( 0 .. @result - 1 ) { my $re; $re = $result[$_]; print FILE qq!$re->[0] 1 $re->[3] $re->[2]!; } close FILE; print "デキターヨ\n"; exit; sub search { if ( $File::Find::name =~ /([0-9_]+)\/$LOGFILE/ ) { my $re; my @status; open( FILE,"<$_" ) or die "can't open"; $re = $dat[$cnt++] = []; $re->[0] = $1; @status = stat( FILE ); $re->[1] = $status[10]; $re->[2] = ; my $f = 0; while( ) { $f++; } close FILE; $re->[3] = $f; } }