Работа с файлами в Perl. Примеры

Работа с данными

Создание файла, открытие файла, запись в файл

Файл можно открыть для чтения, записи в конец файла, перезаписи, чтения/записи. Для этого нужно использовать префиксы:

  • < - режим чтения
  • > - режим записи. Если файл уже содержал что-то, эти данные будут удалены
  • >> - режим записи. Запись новых данных будет вестись в конец файла. Старые данные сохраняются
  • +< - сохраняет содержимое открываемого файла
  • +> - сначала очищает содержимое открываемого файла
  • +>> - сохраняет содержимое открываемого файла, запись в файл всегда осуществляется в конец содержимого файла

Если префикс не задан, файл по умолчанию будет открыт в режиме чтения.

Если открыть для записи файл, который еще не существует, то при завершении работы будет создан новый файл.

Чтение данных из файла

Чтение из файла осуществляется построчно.

Манипуляции с файлами

Как переименовать файл

Функция rename - переименовывает указанный список файлов. Возвращает 1 в случае успешного переименования, в другом случае - 0.

Как получить информацию о файле (дата создания и т.п.)

Функция stat возвращает информацию в списковом контексте, в следующем порядке:

  • dev - Номер устройства в файловой системе
  • ino - Номер индексного дескриптора
  • mode - Режим файла (тип и права доступа)
  • nlink - Количество жестких ссылок на файл (в отсутствии ссылок равно 1)
  • uid - Числовой идентификатор владельца файла
  • gid - Числовой идентификатор группы владельца файла
  • rdev - Идентификатор устройства (только для специальных файлов)
  • size - Размер файла в байтах
  • atime - Время последнего обращения к файлу с начала эпохи
  • mtime - Время последнего изменения файла с начала эпохи
  • ctime - Время изменения индексного дескриптора с начала эпохи
  • blksize - Предпочтительный размер блока для операций ввода/вывода
  • blocks - Фактическое количество выделенных блоков для размещения файла

Начало эпохи датируется 1 января 1900 года 0 часов 0 минут.

Таким образом можно, например, проверить дату последнего изменения файла и удалить его.

Как изменить время последнего обращения к файлу и его модификации

Функция позволяет utime() изменить время последнего обращения (atime) и модификации файла (mtime).

Функция возвращает число файлов, для которых операция изменения времени прошла успешно.

Как удалить файл

Функция unlink удаляет переданный список файлов. Возвращает число успешно удаленных файлов.

Как изменить права доступа к файлам

Функции chmod можно передать список файлов, тогда права доступа будут изменены к каждому из них. Функция задает права доступа для владельца файла, группы и для всех остальных пользователей.

chmod() возвращает число файлов, права доступа к которым были благополучно изменены.

Памятка: чтобы установить права доступа, нужно указать число:

  • 1 (- -x) - возможно только выполнение файла
  • 2 (-w-) - возможна только запись в файл
  • 3 (-wx) - только запись в файл и его выполнение
  • 4 (r- -) - только чтение данных из файла
  • 5 (r-x) - только чтение и выполнение файла
  • 6 (rw-) - только чтение и запись в файл
  • 7 (rwx) - полный доступ: возможно чтение, запись в файл и его запуск на выполнение.

Как изменить владельца файла

Чтобы изменить владельца файла, надо знать его uid и gid. Ну и кроме того, надо иметь права на выполнение данной команды.

Если нужно изменить владельца сразу нескольким файлам, можно передать ф-ции список файлов.

Узнать uid и gid текущего владельца файла можно с помощью ф-ции stat.

chown() возвращает число файлов, владелец для которых был благополучно изменен.

Перемещение и копирование файлов. File::Copy

Модуль File::Copy предоставляет 2 удобные функции для копирования и перемещения файлов из одного места в другое.

Оба метода позволяют использовать не только имена, но и дескрипторы файлов. Например, так:

Полезные ссылки

search.cpan.org: File::Copy

http://perl.find-info.ru/perl/006/file.htm
http://www.spravkaweb.ru/perl/file/
http://www.codenet.ru/webmast/perl/files.php

Работа с файлами в Perl. Примеры: 2 комментария

  1. nik

    не получается создать файл не могу понять почему, помогите плизз

  2. Natalie Автор записи

    Нужны какие-то подробности. Например, код, который вы пытаетесь использовать. Проблема может быть в чем угодно, вплоть до того, что у скрипта не хватает прав на создание файлов в каком-либо каталоге.

Комментарии запрещены.