Опубликован: 15.11.2010 | Доступ: свободный | Студентов: 746 / 45 | Оценка: 4.00 / 5.00 | Длительность: 17:30:00
Специальности: Программист
Лекция 8:

Буферизированный (потоковый) ввод-вывод. Часть III

8.7. Приложение № 4. Операторы и функции файлового ввода-вывода на языке Perl

ФУНКЦИЯ CHDIR
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: chdir [ВЫРАЖЕНИЕ], где ВЫРАЖЕНИЕ - необязательный параметр, задающий имя нового каталога;
НАЗНАЧЕНИЕ: Изменение текущего рабочего каталога на дереве каталогов;
ОПИСАНИЕ: Функция изменяет текущий рабочий каталог на каталог, определяемый значением параметра: ВЫРАЖЕНИЕ. Если параметр опущен, домашний каталог становится текущим. Возвращает значение "истина" в случае успешного выполнения операции замены текущего каталога и "ложь" в противном случае. Каталог, указанный в строке ВЫРАЖЕНИЕ, должен существовать в дереве каталогов компьютера;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: "Истина" в случае успешной смены каталога или "Ложь" в противном случае;

ФУНКЦИЯ CLOSE
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС:
close [ДЕСКРИПТОР]
close
где ДЕСКРИПТОР - имя переменной - дескриптора файла;
НАЗНАЧЕНИЕ: Закрывает файл либо программный канал, связанный с его дескриптором;
ОПИСАНИЕ: Закрывает файл либо программный канал, ассоциированный с дескриптором, заданным параметром ДЕСКРИПТОР. Возвращает булево значение "истина", если успешно очищен буфер и закрыт системный файловый дескриптор. Без параметра закрывает файл или программный канал, ассоциированный с текущим дескриптором, выбранным функцией select() ;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: "Истина" если файл или канал, ассоциированный с дескриптором, успешно закрыт, и "Ложь" в противном случае;

ФУНКЦИЯ: CLOSEDIR
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: closedir ДЕСКРИПТОР, где ДЕСКРИПТОР - дескриптор закрываемого каталога;
НАЗНАЧЕНИЕ: Функция закрывает каталог;
ОПИСАНИЕ: Закрывает каталог, ассоциированный с дескриптором каталога, заданного параметром ДЕСКРИПТОР. Возвращает булево значение "истина", если каталог успешно закрыт;

ФУНКЦИЯ: GLOB
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: glob ВЫРАЖЕНИЕ, где ВЫРАЖЕНИЕ - шаблон для поиска файлов;
НАЗНАЧЕНИЕ: Функция возвращает список найденных в текущем каталоге файлов, удовлетворяющих заданному шаблону;
ОПИСАНИЕ: Возвращает найденные в текущем каталоге файлы, имена которых удовлетворяют заданному шаблону (с использованием метасимволов UNIX *, ?). Значением выражения должна быть строка, содержащая шаблон имён файлов;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Список найденных файлов, удовлетворяющих шаблону поиска;

ФУНКЦИЯ: MKDIR
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: mkdir КАТАЛОГ, РЕЖИМ, где
  • КАТАЛОГ - имя нового каталога;
  • РЕЖИМ - режим доступа к созданному каталогу;
НАЗНАЧЕНИЕ: Создание каталога с новым именем;
ОПИСАНИЕ: Создание нового каталога с именем, заданным параметром: КАТАЛОГ, и режимом доступа, определяемым параметром: РЕЖИМ. При успешном создании каталога возвращает булево значение "истина", в противном случае - "ложь" и в переменную $! заносится сообщение об ошибке;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: "Истина" в случае успешного создания каталога, "Ложь" в противном случае;

ФУНКЦИЯ: OPEN
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС:
open ДЕСКРИПТОР, РЕЖИМ, ИМЯ_ФАЙЛА
open ДЕСКРИПТОР[,ВЫРАЖЕНИЕ]

где

  • ДЕСКРИПТОР - имя переменной-дескриптора файла;
  • РЕЖИМ - режим открытия файла (для чтения, записи и добавления);
  • ИМЯ_ФАЙЛА - имя открываемого файла, с которым будет связан дескриптор;
  • ВЫРАЖЕНИЕ - строка текста с именем и режимом открытия файла;
НАЗНАЧЕНИЕ: Открытие файла для чтения или записи;
ОПИСАНИЕ: Первая форма открывает файл, имя которого является значением параметра: ИМЯ_ФАЙЛА, в режиме, заданным строковым значением параметра: РЕЖИМ, и связывает его с дескриптором, определённым параметром: ДЕСКРИПТОР. При использовании второй формы, в случае присутствия параметра ВЫРАЖЕНИЕ, оно должно вычисляться как строка, в которой определены и режим открытия файла, и его имя. Если во второй форме параметр: ВЫРАЖЕНИЕ не задан, то вместо него используется содержимое скалярной переменной с тем же именем, что и дескриптор: ( $ДЕСКРИПТОР );

Допустимые режимы открытия файлов приведены ниже:

  • "<" - "ЧТЕНИЕ" - открытие файла в режиме чтения;
  • ">" - "ЗАПИСЬ" - открытие файла в режим записи. При этом старое содержимое файла теряется;
  • ">>" - "ДОБАВЛЕНИЕ" - открытие файла в режиме дополнения. Новые данные записываются в конец существующего файла;

ЗАМЕЧАНИЕ: С помощью функции open можно переназначать стандартные потоки ввода-вывода STDIN, STDOUT, STDERR. Например, конструкция:

  • open( STDIN, "in.log" ) - переназначает стандартный поток ввода на файл in.log (для чтения);
  • open( STDOUT, ">output.txt" ) - перенаправляет стандартный поток вывода в файл output.txt (старый файл при этом затирается);
  • open( STDERR, ">error.log" ) - перенаправляет стандартный поток ошибок в файл error.log (старый файл при этом затирается);

Перенаправлять потоки в программе можно один раз, и возврат к прежним значениям не возможен до конца выполнения программы на языке Perl;

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: "Истина" - в случае успешного открытия файла, "Ложь" - в противном случае;

ФУНКЦИЯ: OPENDIR
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: opendir ДЕСКРИПТОР, ВЫРАЖЕНИЕ, где
  • ДЕСКРИПТОР - имя переменной - дескриптора каталога;
  • ВЫРАЖЕНИЕ - строка текста, определяющая путь и имя открываемого каталога;
НАЗНАЧЕНИЕ: Открывает каталог для чтения и изменения;
ОПИСАНИЕ: Открывает каталог, имя которого равно значению параметра: ВЫРАЖЕНИЕ, и связывает его с дескриптором, определённым параметром: ДЕСКРИПТОР. Имена дескрипторов каталога хранятся в собственном пространстве имён Perl.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: "Истина" - в случае успешного открытия каталога, "Ложь" - в противном случае;

ФУНКЦИЯ: RENAME
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: rename СТАРОЕ_ИМЯ, НОВОЕ_ИМЯ, где
  • СТАРОЕ_ИМЯ - старое имя файла;
  • НОВОЕ_ИМЯ - новое имя файла;
НАЗНАЧЕНИЕ: Функция переименовывает файл;
ОПИСАНИЕ: Переименовывает файл. Возвращает 1 в случае успешного переименования и ноль в противном случае.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: "1" - файл успешно переименован, "0" - ошибка операции переименования;

ФУНКЦИЯ: RMDIR
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС:
rmdir ИМЯ_КАТАЛОГА
rmdir
где ИМЯ_КАТАЛОГА - имя удаляемого каталога из дерева каталога системы;
НАЗНАЧЕНИЕ: Удаляет каталог из системы;
ОПИСАНИЕ: Удаление каталога, заданного параметром: ИМЯ_КАТАЛОГА. Каталог удаляется, только если он пустой. Возвращает 1 в случае успешного удаления или ноль в противном случае, сохраняя в переменной $! сообщение об ошибке. Если параметр опущен, то содержимое специальной строки $_ используется как имя каталога.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: "1" - в случае успешного удаления каталога, "0" - каталог удалить не удалось;

ФУНКЦИЯ: READDIR
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: readdir ДЕСКРИПТОР, где ДЕСКРИПТОР - дескриптор каталога;
НАЗНАЧЕНИЕ: Читает имя (имена) элемента каталога;
ОПИСАНИЕ: В скалярном контексте читает следующее имя элемента каталога, связанного с дескриптором каталога: ДЕСКРИПТОР - функцией opendir. В списковом контексте возвращает имена всех оставшихся элементов (файлов и каталогов). Если больше не осталось прочитанных элементов, возвращает неопределённое значение в скалярном контексте и пустой список в списковом контексте;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: имя элемента каталога или оставшиеся в каталоге имена. Возвращает неопределённое значение в случае отсутствия не прочтённых элементов каталога;

ФУНКЦИЯ: REWINDDIR
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: rewinddir ДЕСКРИПТОР, где ДЕСКРИПТОР - дескриптор каталога;
НАЗНАЧЕНИЕ: Устанавливает текущую позицию чтения каталога на начало;
ОПИСАНИЕ: Устанавливает текущую позицию каталога, связанного с дескриптором: ДЕСКРИПТОР, на начало;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет;

ФУНКЦИЯ: SEEK
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: seek ДЕСКРИПТОР, ПОЗИЦИЯ, ПОЛОЖЕНИЕ, где
  • ДЕСКРИПТОР - дескриптор обрабатываемого файла;
  • ПОЗИЦИЯ - смещение позиции файла относительно положения, заданного параметром: ПОЛОЖЕНИЕ ;
  • ПОЛОЖЕНИЕ - числовая константа, задающая точку начала отсчёта смещения:
    • "0" - начало файла,
    • "1" - текущая позиция,
    • "2" - конец файла;
НАЗНАЧЕНИЕ: Устанавливает текущую позицию файла для чтения и записи;
ОПИСАНИЕ: Устанавливает текущую позицию файла, связанного с дескриптором: ДЕСКРИПТОР, смещённой на заданное параметром: ПОЗИЦИЯ - число байтов относительно положения, заданного параметром: ПОЛОЖЕНИЕ (0 - начало файла, 1 - текущая позиция, 2 - конец файла). Возвращает 1 при успешном выполнении операции позиционирования и 0 в противном случае;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: "1" - при успешном выполнении операции позиционирования, "0" - в противном случае;

ФУНКЦИЯ: SEEKDIR
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: seekdir ДЕСКРИПТОР, ПОЛОЖЕНИЕ, где
  • ДЕСКРИПТОР - дескриптор каталога;
  • ПОЛОЖЕНИЕ - смещение каталога относительно его начала;
НАЗНАЧЕНИЕ: Функция устанавливает текущую позицию в каталоге для чтения функцией readdir ;
ОПИСАНИЕ: Устанавливает текущую позицию в каталоге, связанном со своим дескриптором: ДЕСКРИПТОР, для функции: readdir. Параметр: ПОЛОЖЕНИЕ - должен быть значением, возвращаемым функцией: telldir ;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет;

ФУНКЦИЯ: SELECT
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: select [ДЕСКРИПТОР], где ДЕСКРИПТОР - связанный с переменной дескриптор файла;
НАЗНАЧЕНИЕ: Возвращает и устанавливает дескриптор текущего файла (потока) вывода;
ОПИСАНИЕ: Возвращает дескриптор текущего установленного файла вывода. Если задан параметр: ДЕСКРИПТОР, делает файл, связанный с данным дескриптором, текущим файлом вывода. Это приводит к тому, что функции print и write без дескрипторов будет осуществлять вывод именно в этот файл;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Дескриптор текущего файла вывода;

ФУНКЦИЯ: SYSCALL
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: syscall СПИСОК, где СПИСОК - строка вместе с системной командой на выполнение;
НАЗНАЧЕНИЕ: Функция осуществляет вызов системной команды;
ОПИСАНИЕ: Осуществляет вызов системной команды, заданной первым элементом параметра: СПИСОК ; остальные элементы списка передаются этой команде в качестве параметров. В случае неуспешного выполнения системной команды возвращает -1, и в переменной $! выдаёт информацию об ошибке
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: "-1" - неуспешное выполнение команды, "0" и другие коды - в случае успеха;

ФУНКЦИЯ: TELL
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: tell [ДЕСКРИПТОР], где ДЕСКРИПТОР - дескриптор обрабатываемого файла;
НАЗНАЧЕНИЕ: Возвращает текущую позицию файла;
ОПИСАНИЕ: Возвращает текущую позицию в файле, связанном с дескриптором: ДЕСКРИПТОР. Если параметр опущен, то подразумевается файл, для которого была сделана последняя операция чтения;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Текущая позиция (смещение) файла относительно его начальной позиции;

ФУНКЦИЯ: TELLDIR
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС: telldir ДЕСКРИПТОР, где ДЕСКРИПТОР - дескриптор каталога;
НАЗНАЧЕНИЕ: Возвращает текущую позицию в каталоге;
ОПИСАНИЕ: Возвращает текущую позицию в каталоге, связанном с дескриптором: ДЕСКРИПТОР ;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Текущая позиция элементов в каталоге;

ФУНКЦИЯ: TRUNCATE
ОПРЕДЕЛЕНА В: Везде;
СИНТАКСИС:
truncate ДЕСКРИПТОР, ДЛИНА
truncate ВЫРАЖЕНИЕ, ДЛИНА

где

  • ДЕСКРИПТОР - дескриптор изменяемого файла;
  • ВЫРАЖЕНИЕ - строковая константа, определяющая изменяемый файл;
  • ДЛИНА - новая длина файла;
НАЗНАЧЕНИЕ: Изменяет длину файла;
ОПИСАНИЕ: Изменяет длину файла, связанного с дескриптором: ДЕСКРИПТОР - или значением параметра: ВЫРАЖЕНИЕ, устанавливая его равным значению параметра ДЛИНА. Размер файла может быть увеличен или уменьшен;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет;