seek

Синтаксис

seek FILEHANDLE, POSITION, WHENCE

Описание

Перемещает указатель текущей позиции файла, адресуемого указателем FILEHANDLE, аналогично функции fseek стандартной библиотеки ввода-вывода. FILEHANDLE может быть введен как выражение, значение которого дает имя собственно указателя файла. Аргумент WHENCE указывает режим перемещения указателя:

0 - указатель устанавливается в положение POSITION,

1 - указатель сдвигается на POSITION байт относительно текущего положения,

2 - указатель сдвигается на POSITION относительно конца файла.

Вы можете использовать для этого аргумента символьные обозначения: SEEK_SET, SEEK_CUR и SEEK_END при условии загрузки модуля POSIX. При успешном завершении функция возвращает 1, в противном случае - 0.
В некоторых системах вам может потребоваться выполнить перемещение указателя в ходе переключения между чтением и записью файла. Кроме прочих случаев, это может использоваться при вызове функции стандартного ввода-вывода clearerr.
Использование режима "whence", равного 1 (SEEK_CUR), полезно и тогда, когда вы хотите лишь "подтвердить" положение указателя, не перемещая его:
seek(TEST,0,l);
Несмотря на кажущуюся бессмысленность, это необходимо при создании приложений, работающих аналогично tail -f. Как только в ходе чтения вы обнаружите признак конца файла, вы переводите процесс на некоторое время в состояние "спячки", а затем выполняете "псевдоперемещение", чтобы синхронизироваться с файлом, содержание которого могло измениться. В результате выполнения приведенной выше строки ваше положение в файле не изменится, но состояние конца файла будет сброшено и вы сможете попытаться считать из <FILE> следующие данные. Иногда, впрочем, этот механизм не срабатывает из-за особенностей построения библиотек ввода-вывода. В таких случаях вам может потребоваться более "тяжеловесное решение", например такое:
for (;;) {
  for ($curpos = tell(FILE);
    $_ = <FILE>;
    $curpos = tell(FILE))   {
    # выполняем поиск нужных нам вещей и сохраняем
    # их в файлах
    }
sleep ($for_a_while) ;
seek(FILE, $curpos, 0);
}



2011-04-26 00:53:16 lykich

Thanks




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: