Приглашаем посетить
Грибы (grib.niv.ru)

Чтение и запись блоков данных

Чтение и запись блоков данных

Программисты часто рассматривают текстовые файлы как текстовые потоки про­сто потому, что один символ следует за другим до маркера конца файла. Если скрипт должен работать с файлом, который ориентирован на работу с блока­ми, а не потоками, то скрипт может использовать функции sysread и syswrite для обработки фиксированных блоков данных. Функции sysread и syswrite имеют сле­дующие форматы:

$result = sysread(FileHandle, $Var, Length[, Offset]);

$result = syswrite(FileHandle, $Var, Length[, Offset]);

Если в вызове функций указывается сдвиг от начала файла ( Offset ), то функции выполнят поиск места, с которого они начнут операции ввода/вывода.

Функции sysread и syswrite обе передают данные, используя скалярную перемен­ную строкового типа. Поскольку функции обрабатывают фиксированные блоки памяти, то данные могут содержать бинарные значения, включая нули и марке­ры конца файла. Если в вызове функции указывается сдвиг от начала файла ( Offset ), то функция выполняет поиск места в файле, с которого начинает выполнять опе­рации ввода/вывода.

Если вы работаете с блоками данных, то скрипты могут также использовать сле­дующие функции ввода/вывода:

$result = seek(FileHandle, Position, Base);

$result = tell(FileHandle);

$result = eof(FileHandle);

Функция seek работает в точности так же, как fseek — функция библиотеки времени выполнения языка С. Параметр Position задает позицию относительно начала от­счета, которая в свою очередь задается параметром Base следующим образом:

·         0    Поиск от начала файлов

·         1     Поиск от текущей позиции

·         2    Поиск от конца файла

Функция tell языка Perl работает в точности так же, как фикция ftell библиотеки времени выполнения языка С. Эта функция возвращает текущую позицию в файле, с которой выполняются операции чтения или записи. Наконец, функция eof , так же как и функция feof языка С, возвращает значение «истинно» или «ложино», которое скрипт может использовать для определения достижения конца файла.

Назад | Оглавление | Далее