Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чтение файла с указаной позиции, читать файл с места на котором остановил 
:(
    Опции темы
Strafer
Дата 21.4.2008, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 15.4.2008

Репутация: нет
Всего: нет



Код

my $tmpsize = $db->prepare("SELECT oldsize FROM size");
$tmpsize->execute;
my $oldsize = $tmpsize->fetchrow_array;
print "Old size log file \b", $oldsize, "\n"; #добалено для проверки и отладки
my $nowsize = -s FTPD;
print "New size log file \b", $nowsize, "\n";# для тестирования
$nowsize = $db->do("UPDATE size SET oldsize=$nowsize");
    if ($nowsize > $oldsize)
    {
     seek(FTPD,$oldsize,0);
     print "дочитываю файл\n";
    }
    else
    {
     seek(FTPD,0,0);
     print "начал читать файл сначала\n";
    }
    my $ntpos = tell(FTPD);
    print "Это позиция на момент чтения лога: \b", $ntpos, "\n";
while(<FTPD>)#построчное чтение лога Pure-FTPd
{
    my $corentpos = tell(FTPD);
    print "Текущая позиция при чтении файла \b", $corentpos, "\n";

Результят вот такой
Код

Old size log file 88
New size log file177
начал читать файл сначала
Это позиция на момент чтения лога: 0
Текущая позиция при чтении файла 88
Текущая позиция при чтении файла 177

подскажите пожайлуста поему все время программа попадает на чтение с начала файла, неужели условие не выполняется
догадываюсь что значение получено из БД не integer но ведь на это не ругается
 Зато если начать читать сначала то
Код

Old size log file0
New size log file177
добавленый файл
Это позиция на момент чтения лога:0
Текущая позиция при чтении файла88
Текущая позиция при чтении файла177


Это сообщение отредактировал(а) Strafer - 21.4.2008, 23:41
PM MAIL ICQ   Вверх
amg
Дата 22.4.2008, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 9
Всего: 50



По моему, нужно внимательно посмотреть, что в переменной $oldsize. Почему напечаталось Old size log file 88, хотя, казалось бы, должно быть Old size log file88 (без последнего пробела)?

PS Strafer, какой смысл в строке типа "Old size log file \b". Разве "Old size log file" - не то же самое?
PM MAIL   Вверх
yura_nev
Дата 22.4.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.12.2007

Репутация: нет
Всего: нет



очевидно потому что $nowsize у вас равно rows-affected:
Код
$nowsize = $db->do("UPDATE size SET oldsize=$nowsize");


PM MAIL   Вверх
Strafer
Дата 23.4.2008, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 15.4.2008

Репутация: нет
Всего: нет



yura_nev, спасибо за подсказку исправил теперь выглядит вот так 
Код

my $tmpsize = $db->prepare("SELECT oldsize FROM size");
$tmpsize->execute;
my $oldsize = $tmpsize->fetchrow_array;
print "Old size log file", $oldsize, "\n";
my $nowsize = -s FTPD;
print "New size log file", $nowsize, "\n";
    if ($nowsize > $oldsize)
    {
     seek(FTPD,$oldsize,0);
     print "Я попал на добавленый файл\n";
    }
    elsif ($nowsize == $oldsize)
    {
        print LOGF scalar(localtime), "\t", "File don't changet\n";
        exit 1;
    }
    else
    {
     seek(FTPD,0,0);
     print "Я начал читать файл сначала\n";
    }
    my $ntpos = tell(FTPD);
    print "Это позиция на момент чтения лога: \b", $ntpos, "\n";
$nowsize = $db->do("UPDATE size SET oldsize=$nowsize");
while(<FTPD>)#построчное чтение лога Pure-FTPd
{
    my $corentpos = tell(FTPD);
    print "Текущая позиция при чтении файла \b", $corentpos, "\n";

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0407 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.