Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
perl.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
388.1 Кб
Скачать

Открытие файлов и других потоков

Для того чтобы скрипт использовал файл, он должен вызватьфункцию open. Она имеет следующий вид:

open(FileHandle[, FileName])

В отличие от функции open библиотеки времени выполнения языка С, функция open языка Perl не содержит параметра mode в вызове функции. Perl определяет режим (mode) открытия файла, основываясь на имени файла. Таблица 12.3 иллюстрирует связь режима открытия файла и имени файла.

Табл. 12.3. Соглашение об именах и режимах доступа файлов языкаPerl

Имя файла

Операция

<FILE>

Открыть файл только для чтения (аналогично <r> функции fopen)

<<FILE>

Открыть файл для чтения (то же самое, что <FILE>)

<>FILE>

Создать файл для записи (как <w> функции fopen)

<>>FILE>

Открыть файл для добавления в его конец (как <г+> функции fopen)

<+>FILE>

Создать файл для чтения/записи (как <rw> функции fopen)

<+<FILE>

Открыть файл для чтения/записи (как <rw+> функции fopen)

<| CMD>

Открыть канал из процесса, исполняющего команду <CMD>

<CMD |>

Открыть канал процессу, исполняющему команду <CMD>

Примечание: Режим канального (pipe) потока может существовать не на всех системах.

Если в вызове функции open опущено имя файла, то Perl подразумевает, что имя файла содержится в строковой переменной$FileHandle. Когда скрипт завершил использование файла, он закрывает его, используя функцию close, как показано ниже:

close(FileHandle);

фрагмент программы иллюстрирует использование функций open иclose:

open(InFile, "test.dat") || die; # открываем для чтения

# test.dat

open(OutFile, ">test.dat") || die; # создаём test.dat

$AuxFile = ">>test.dat";

open(Aux, $AuxFile) || die; # открывает для дополнения

# test.dat

close(InFile);

close(OutFile);

close(Aux);

Обратите внимание, что указатели файлов не имеют обычных односимвольных префиксов. Как вы узнаете далее, скрипты языка Perlмогут хранить имена указателей в виде строк скалярных переменныхи передавать указатель любой функции, которая может их обрабатывать. При необходимости Perl выполняет конвертацию значений. В операционной системе MS-DOS Perl поддерживает дополнительную функцию, которая называется hinmode и позволяет файловому вводу/выводу переключаться между текстовым и бинарным режимами. В большинстве же систем различие между текстовым и бинарнымрежимами не имеет значения. Однако для операционной системыMS-DOS символ новой строки представляет собой последовательностьиз двух символов (CR+LF). Поскольку большинство программ не ожидают встретить два символа в конце строки, то система ввода/вывода должна выполнить преобразование. Для того чтобы можно было использовать функцию binmode, соответствующий указатель может бытьоткрыт. Функция binmode имеет следующий формат:

binmode(FileHandle);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]