Для того чтобы скрипт использовал файл, он должен вызвать функцию 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 );