Приглашаем посетить
Тютчев (tutchev.lit-info.ru)

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

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

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

open(FileHandle[, FileName])

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

Имя файла             Операция

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

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

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

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

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

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

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

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

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

Примечание: Режим канального ( 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 );

Назад | Оглавление | Далее