Операции проверки файлов
Перед выполнением операций ввода-вывода часто требуется узнать информацию об объектах файловой системы. В Perl есть набор унарных операций для удобной проверки различных характеристик файлов и каталогов. Они имеют вид флагов из одной латинской буквы с предшествующим знаком минус, после которого указывается имя проверяемого файла. Полный перечень операций проверки файлов приведен в таблице 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) |
Вот несколько типичных примеров использования операций проверки файлов для контроля доступности данных:
open($f1, "<$file1") # открыть файл на чтение, if (-e $file1) && # если он существует и (-r $file1); # он доступен на чтение open $f2, ">$file2" # открыть файл на запись, if -w $file2; # если в него можно писать $file_size = -s $file; # узнать размер файла print "$file - является каталогом!" if -d $file;