Открытие файла осуществляется функцией open.
open(FFF,"> file.txt");
Разберемся. У функции три параметра: FFF - название файлового манипулятора (его задаете вы), режим доступа ">" и "file.txt" - имя нужного вам файла. Есть три основных режима: ">" - запись,">"- добавление в файл.
Есть еще функция sysopen. Работа с ней не на много сложнее, чем с open, зато с ее помощью вы сможете более детально "сказать" системе о ваших намерениях (то есть то, что вы хотите сделать с файлом).
В sysopen три обязательных параметра и один необязательный.
Например: sysopen(FH,$name, $flags, $param);
FH - собственно, файловый манипулятор, $name - имя файла в чистом виде (без ">" и др.). В $flags помещаем число, полученное объединением нижеописанных констант через OR ( | ):
O_RDONLY | Только для чтения |
O_WRONLY | Только для записи |
O_RDWR | Для чтения и для записи |
O_CREAT | Если файла нет, создать! |
O_APPEND | Открытие в режиме присоединения |
O_TRUNC | Очищаем содержимое при открытии |
Это, конечно, не полный перечень, но здесь перечислены самые необходимые и часто используемые константы.
И наконец $param. Этот параметр задает маску доступа к файлу и записывается в восьмеричной системе. Обычно используется значение 0666 (значение по умолчанию, то есть если $param опущен), или 0777. Первое значение используется для обычных файлов, второе же для каталогов и исполняемых файлов.
Пример открытия файла для записи (если не найден - создается): sysopen(FH,"data.txt",O_WRONLY|O_TRUNC|O_CREATE);
Запись в файл делаем функцией print.
print(FFF "oppa! Пишем в файл!");
Здесь FFF - имя файлового манипулятора, а строка в кавычках - текст, который мы хотим записать в файл, ассоциированный с FFF.
Если до попытки открытия файла не существовало, то функция open его создаст, а если файл был, и он был не пустой, то после вышеуказанной функции print, в нем ничего не останется от предыдущей информации, а записана будет та ерунда, которую я там вписал.
Как уже было сказано, существуют три стандартных файловых манипулятора, и при опущенном файловом манипуляторе функция print осуществит вывод в STDOUT (то же относится к функциям printf и write). Чтобы изменить направление вывода в Perl предусмотрена функция select (правда не только для этого). Пример: