Шрифт:
Таблица 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 в случае ошибки. Тогда из переменной $! можно выяснить подробности неудачи: