Шрифт:
Таблица 9.3. Операции проверки файлов
| Операции | Описание проверок |
|---|---|
| – r -w -x | Файл доступен для чтения / записи / исполнения (по effective UID+GID) |
| – R -W -X | Файл доступен для чтения / записи / исполнения (по real UID+GID) |
| – o -O | Файл принадлежит текущему пользователю по effective / real UID |
| – e -z | Файл существует (exists) / имеет нулевую длину (zero) |
| – s | Файл имеет ненулевой размер: возвращает размер в байтах (size) |
| – f -d | Файл является обычным файлом (file) / каталогом (directory) |
| – l -S -p | Файл является ссылкой / сокетом / именованным FIFO-каналом (pipe) |
| – b -c | Файл является блочным / символьным специальным файлом |
| – u -g -k | Для файла установлен бит setuid / setgid / sticky |
| – t | Файловый манипулятор связан с терминалом (tty) |
| – T -B | Файл является текстовым (text) / двоичным (binary) |
| – M -A -C | Время изменения (modification) / доступа (access) / изменения (change) индексного узла (inode) файла в днях относительно времени начала выполнения программы ($^T) |
Вот несколько типичных примеров использования операций проверки файлов для контроля доступности данных:
В Perl есть целый набор встроенных функций для работы с файлами, с помощью которых можно манипулировать с самими файлами, а не с данными, хранящимися в них.
Функция rename переименовывает файл, возвращая логическое значение: 1 при успешном изменении имени и 0 - в противном случае. Ей передаются старое и новое имя файла с абсолютным или относительным путем.
Функция unlink удаляет файл или список файлов, возвращая число 1 при успешном удалении и 0 - при ошибке.
Функция truncate усекает файл до указанного размера и возвращает число 1 в случае успешного выполнения усечения и неопределенное значение undef– при возникновении ошибки. Файл может задаваться именем или файловым манипулятором. Например:
Функция stat возвращает информацию о файле в виде списка или пустой список при неудаче. Файл может задаваться манипулятором файла или выражением со значением имени файла:
Подробное описание всех элементов информационного списка можно найти в документации, указав утилите чтения документов имя функции следующим образом:
Функция utime изменяет у файла (или нескольких файлов из заданного списка) время доступа и время модификации, задаваемые числовыми значениями.
Кроме упомянутых, есть еще встроенные функции для изменения прав доступа и владельца файла, для чтения и создания символических и жестких ссылок. Немало разных функций для работы с файлами имеются в стандартной библиотеке модулей Perl, еще больше можно найти в хранилище модулей CPAN.
Помимо работы с файлами, в Perl есть необходимый набор встроенных функций для работы с каталогами. Нужно иметь в виду, что успешность выполнения операций с каталогами зависит от набора прав пользователя, от лица которого выполняется Perl-программа.
Функция mkdir создает каталог с указанным именем. Вторым аргументом функции можно задавать права доступа для создаваемого каталога (в соответствии со стандартом POSIX). Возвращает число 1 при успешном создании или 0 при ошибке. Причину неудачи при создании каталога можно узнать из специальной переменной $!, которая содержит сообщение об ошибке.
Функция rmdir удаляет каталог по его имени, если он пуст, возвращает число 1 при успешном удалении каталога или 0 в случае ошибки. Тогда из переменной $! можно выяснить подробности неудачи: