Здравствуйте!
У меня к Вам есть просьба - помогите сделать один скрипт. У меня стоит форум UBB и хотелось бы сделать такой скрипт, который сканирует директории, сортирует файлы и вывод несколько новых (последне измененых) файлов (сообщений) на экран.
Есть у меня уже готовый скрипт (см. ниже), но он только сортирует файлы по дате изменения. А это есть плохо. Я, например, запускаю на форуме обновление всех файлов, и все файлы имеют одинаковую дату изменения -> скрипт просто беситься...
Если такое вообще возможно, чтобы скрипт сортировал сначала по имени (на форуме сообщения имеют формат 0000001.html, 000002.html и т.д.) а потом уже по дате. Если дата у всех одинаковая, то просто вывести, например, 3 последних созданных собщений: 000025.html, 000024.html, 000023.html + считывать что находиться между
и генерировать ссылки на эти файлы.
Заранее все ОГРОМНОЕ спасибо.
А вот и сам скрипт:
#!/usr/local/bin/perl
$request=$ENV{\'REQUEST_METHOD\'};
$content=$ENV{\'CONTENT_LENGTH\'};
$cgi="/cgi-bin";
$url="/ubb/Forum8/HTML";
$dir="e:/server/host/ubb/ubb/Forum8/HTML";
$path="/forum/images";
$cdir="/cgi-bin";
$page=$input {\'page\'};
opendir (DIR,"$dir");
@mes=readdir(DIR);
$number=@mes-2;
#Ограничиваем количество записей на страницу.
if ($page eq "") {
$page=0;
}
$limit=10;
$pages=scalar ($number/$limit);
$begin=$page*$limit;
$next=$begin+$limit;
$a=$begin+1;
print "Content-type:text/html\\n\\n";
print "";
splice (@mes,0,2);
for ($i=$begin;$i<$next;$i++) {
if (!-d "$dir/$mes[$i]" && "$mes[$i]" ne "." && "$mes[$i]" ne "..") {
foreach $mes (@mes) {
$time=(stat ("$dir/$mes"))[9];
$stat {$time}=$mes;
}
@keys=keys %stat;
@keys=sort ({$b<=>$a} @keys);
foreach $key (@keys) {
$value=$stat {$key};
push (@val,$value);
$key=localtime ($key);
push (@time,$key);
}
open (FILE,"$dir/$val[$i]");
@lines=;
close (FILE);
foreach $line (@lines) {
if ($line=~ /(.*?)<\\/title>/is) {
$title=$1;
}
if ($line=~ /content=\\"(.*?)\\"/is) {
$name=$1;
}
if ($line=~ /^$/i) {
$reply=$1;
push (@reply,$reply);
$char=@reply-1;
}
}
print <
$title
HTML
splice (@reply);
}
}
exit;
closedir (DIR);
last CASE;
if ($request eq \'GET\') {
$query=$ENV{\'QUERY_STRING\'};
}
else {
sysread(STDIN,$query,$content);
}
@pairs = split(/&/, $query);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$input{$name} = $value;
}
exit;