|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Armen Stepanian 2:5020/902.83 16 Oct 2001 22:24:44 To : All Subject : ? --------------------------------------------------------------------------------
Посоветуйте как решить проблемку: есть некий архив файлов, котрые хранят
записи. Файлы названы cn0503.txt, lt0615.txt и т.д. 2 буквы формата и дата.
Причем дата - почти рандомна. То есть раз в неделю делается что-то типа
snapshot'a. Требуется: найти файл за "неделю назад" или ближайший к нему (более
ранний, чем неделя). Если ARGV[2] будет равно month, то за "месяц назад" или
ближайший к нему.
Вот как я сделал (не доделал еще "month"):
==== Hачало 1.pl ====
#!/usr/bin/perl
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
$mon ++;
$mon = "0".$mon if $mon<10;
$mday = "0".$mday if $mday<10;
$mmon=$mon;
$mmday=$mday;
while ($mmon > "00")
{
while ($mmday > "00")
{
$filename = "$format$mmon$mmday.txt";
print "\$filename = $filename\n"; #debug
if (!-e ($filename))
{ $mmday = $mmday - 1;
$mmday = "0".$mmday if $mmday < 10;
}
else
{ $lastdtbfile = $filename;
print "Found last database file from $mmon.$mmday.\n";
}
$mmon = $mmon - 1 if $mmon ne "00";
$mmon = "0".$mmon if $mmon < 10;
$mmday = 31;
}
}
==== Конец 1.pl ====
Проблемы таковы: при нахождении $lastdtbfile не знаю, как лучше выйти из
цикла, может быть ввести некий флаг? Да и вообще не работает. :) sort glob,
неудобен тем, что, откатываясь на неделю назад или месяц назад, если не окажется
такого файла, все равно придется перебирать даты... Вообще посоветуйте, как
"идеологически" исправить цикл. :) ActivePerl 5.002, W95. Спасибо.
WBR, Armen.
--- Xtreme / MtG / Rollerz / SKL
* Origin: CONNECT FFFFF/Hиштяк/ВОбеСтороныHиштяк/ВсеПрибамбасы (2:5020/902.83)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/39513bccb3b3.html, оценка из 5, голосов 10
|