Доступ к файлам
Таблица 7.1. Константы режима доступа к файлу.
Константа | Значение |
---|---|
0_RDONLY | Только чтение |
0_WRONLY | Только запись |
0_RDWR | Чтение и запись |
0_CREAT | Создание файла, если он не существует |
0 EXCL | Завершение с ошибкой, если файл уже существует |
0_APPEND | Добавление в конец файла % |
Права доступа (необязательный параметр РАЗРЕШЕНИЕ) задаются в восьмеричной системе и при их определении учитывается текущее значение маски доступа к процессу, задаваемого функцией umasko. Если этот параметр не задан, то Perl использует значение 0666.
(О правах доступа читайте документацию Perl для установленной на вашем компьютере операционной системе.)
Совет
Если возникают затруднения с установкой прав доступа, то придерживайтесь следующего правила: для обычных файлов передавайте 0666, а для каталогов и исполняемых файлов 0777.
В примере 7.2 собраны операции открытия файлов функцией open () и эквивалентные им открытия с помощью функции sysopen ().
use Fcnti; # Только чтение open FF, "< file.txt"; sysopen FF, "file.txt", O_RDONLY; # Только запись (создается, если не существует, # и очищается содержимое, если существует) open FF, "> file.txt"; sysopen FF, "file.txt", 0_WRONLY | 0_CREAT | OJTRUNC; # Добавление в конец (создается, если не существует) open FF, "" file.txt"; sysopen FF, "file.txt", OJJRONLY I 0_CREAT I O_APPEND; # Чтение/запись (файл должен существовать) open FF, "+< file.txt"; sysopen FF, "file.txt", O_RDWR; # Чтение/запись (файл очищается) open FF, "+> file.txt"; sysopen FF, "file.txt", O_RDWR | 0_CREAT I OJTRUNC;
При открытии файла функции open () и sysopen () возвращают значение о, если открытие файла с заданным режимом произошло успешно, и неопределенное значение undef в противном случае. Всегда следует проверять успешность выполнения операции открытия файла, прекращая выполнение программы функцией die (). Эта функция отображает список передаваемых ей параметров и завершает выполнение сценария Perl:
open(FF, "+< $file") or'die "Нельзя открыть файл $file: $!";
Обратите внимание, в сообщении функции die () используется специальная переменная $!, в которой хранится системное сообщение или код ошибки. Эта информация помогает обнаружить и исправить ошибки в программе. Например, если переменная $fiie содержит имя не существующего файла, то при выполнении предыдущего оператора пользователь может увидеть сообщение следующего вида:
Нельзя открыть файл file.txt: No such file or directory at D:\PERL\EX2.PL line 4.
Английский текст этого сообщения представляет информацию, содержащуюся в Переменной $!.