open(файловая_переменная,"имя файла"); #открыть файл для чтения
open(файловая_переменная,">имя файла"); #открыть файл для записи
open(файловая_переменная,">>имя файла"); #открыть файл для записи в конец
open(файловая_переменная,"+<имя файла"); #открыть файл для чтения и записи
open(файловая_переменная,"|команда"); #направить информацию на вход программы
open(файловая_переменная,"команда|"); #считать информацию с выхода программы
open(файловая_переменная,"|команда|"); #и то и другое вместе
Открыв файл, иожно считать из него строку в скалярную переменную
$s=<FILE>
Чтобы избавиться от символа новой строки на конце используется функция chomp().
Если считать файл в списочную переменную, то получится список из строк файла от текущей и до конца.
Бинарный файл можно писать и читать функциями sysread() и syswrite:
sysread(файловая_переменная,$скалярная_переменная,кол-во_байт);
syswrite(файловая_переменная,$скалярная_переменная,кол-во_байт);
Эти функции соответсвенно читают и пишут блок указанного размера из файла, заданного файловой переменной, в скалярную переменную.
Чтобы закрыть файл существует процедура close() :
close(файловая_переменная);
В ниже следующей таблице приведены операции для работы с файлами. Их аргументами могут быть как файловые переменные, так и строки, представляющие имена файлов.
Операция |
Описание |
Пример использования |
| -r | Файл доступен для чтения | unless (-r "file") {print "Cannot read";} |
| -w | Файл доступен для записи | |
| -x | Файл доступен для исполнения | |
| -o | Файл принадлежит пользователю | if (-o "index.html") {chmod(0777,"index.html");} |
| -R | Файл доступен для чтения реальному пользователю, а не только "эффективному" | |
| -W | Файл доступен реальному пользователю для записи | |
| -X | Файл доступен реальному пользователю для исполнения | |
| -O | Файл принадлежит реальному пользователю | |
| -e | Файл или каталог существует | unless (-e $file) {open(f,$file);} |
| -z | Файл существует, но имеет нулевую длину | if (-z $file) {unlink($file);} |
| -s | Размер файла в байтах | print "Size of file is -s $file"; |
| -f | Файл существует и является простым файлом | |
| -d | Файл существует и является каталогом | if (-d 'public_html') {chdir('public_html');} |
| -l | Файл существует и является символической ссылкой | |
| -p | Файл существует и является каналом FIFO | |
| -u | Файл имеет бит установки пользователя | |
| -g | Файл имеет бит установки группы | |
| -k | У файла установлен sticky-бит | |
| -t | Файл является терминальным устройством | |
| -M | Время с последнего изменения файла (в днях) | print -M $file |
| -A | Время последнего доступа к файлу (в днях) | |
| -C | Время последнего изменения файлового индекса (в днях) |