Spec-Zone.ru › Perl 5.34

ОбработчикФайла

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНТАКСИС
  • ОПИСАНИЕ
  • СМОТРИТЕ ТАКЖЕ

ИМЯ

ОбработчикФайла - методы объекта для работы с файловыми дескрипторами

СИНТАКСИС

use FileHandle;

$fh = FileHandle->new;
if ($fh->open("< file")) {
    print <$fh>;
    $fh->close;
}

$fh = FileHandle->new("> FOO");
if (defined $fh) {
    print $fh "bar\n";
    $fh->close;
}

$fh = FileHandle->new("file", "r");
if (defined $fh) {
    print <$fh>;
    undef $fh;       # automatically closes the file
}

$fh = FileHandle->new("file", O_WRONLY|O_APPEND);
if (defined $fh) {
    print $fh "corge\n";
    undef $fh;       # automatically closes the file
}

$pos = $fh->getpos;
$fh->setpos($pos);

$fh->setvbuf($buffer_var, _IOLBF, 1024);

($readfh, $writefh) = FileHandle::pipe;

autoflush STDOUT 1;

ОПИСАНИЕ

ПРИМЕЧАНИЕ: Этот класс теперь является интерфейсом к классам IO::*.

FileHandle::new создаёт FileHandle, который является ссылкой на новый созданный символ (см. пакет Symbol). Если он получает какие-либо параметры, они передаются FileHandle::open; если открытие завершается ошибкой, объект FileHandle уничтожается. В противном случае он возвращается вызывающей стороне.

FileHandle::new_from_fd создаёт FileHandle как new делает. Он требует два параметра, которые передаются FileHandle::fdopen; если fdopen завершается ошибкой, объект FileHandle уничтожается. В противном случае он возвращается вызывающей стороне.

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

Если FileHandle::open получает строку Perl-режима (">", "+<", и т.д.) или строку режима POSIX fopen() ("w", "r+", и т.д.), он использует оператор Perl open.

Если FileHandle::open получает числовой режим, он передаёт этот режим и необязательное значение разрешений в оператор Perl sysopen. Для удобства, FileHandle::import пытается импортировать константы O_XXX из модуля Fcntl. Если динамическая загрузка недоступна, это может завершиться ошибкой, но остальная часть ОбработчикаФайла по-прежнему будет работать.

FileHandle::fdopen подобен open, за исключением того, что его первый параметр не является именем файла, а скорее именем файлового дескриптора, объектом FileHandle или номером файлового дескриптора.

Если C-функции fgetpos() и fsetpos() доступны, то FileHandle::getpos возвращает значение-маркер, представляющее текущую позицию FileHandle, и FileHandle::setpos использует это значение, чтобы вернуться в ранее посещённую позицию.

Если C-функция setvbuf() доступна, то FileHandle::setvbuf устанавливает политику буферизации для FileHandle. Порядок вызова Perl-функции совпадает с её C-аналогом, включая макросы _IOFBF, _IOLBF, и _IONBF, за исключением того, что параметр буфера указывает на скалярную переменную, используемую в качестве буфера. ПРЕДУПРЕЖДЕНИЕ: Переменная, используемая в качестве буфера FileHandle::setvbuf, не должна изменяться каким-либо образом до закрытия FileHandle или до повторного вызова FileHandle::setvbuf, иначе может произойти повреждение памяти!

См. perlfunc для полных описаний каждого из следующих поддерживаемых FileHandle методов, которые являются просто интерфейсами к соответствующим встроенным функциям:

close
fileno
getc
gets
eof
clearerr
seek
tell

См. perlvar для полных описаний каждого из следующих поддерживаемых FileHandle методов:

autoflush
output_field_separator
output_record_separator
input_record_separator
input_line_number
format_page_number
format_lines_per_page
format_lines_left
format_name
format_top_name
format_line_break_characters
format_formfeed

Кроме того, для выполнения обычных операций ввода-вывода вам могут потребоваться следующие:

$fh->print

См. "print" в perlfunc.

$fh->printf

См. "printf" в perlfunc.

$fh->getline

Он работает как <$fh>, описанный в "Операторы Ввода/Вывода" в perlop, за исключением большей удобочитаемости и возможности безопасного вызова в контексте списка, но всё равно возвращает только одну строку.

$fh->getlines

Он работает как <$fh>, когда вызывается в контексте списка для чтения всех оставшихся строк в файле, за исключением большей удобочитаемости. Также он будет выдавать ошибку croak(), если случайно будет вызван в скалярном контексте.

Существует множество других функций, доступных, так как FileHandle унаследован от IO::File, IO::Seekable и IO::Handle. Для получения дополнительной информации о других функциях, пожалуйста, обратитесь к соответствующим страницам документации.

СМОТРИТЕ ТАКЖЕ

Расширение IO, perlfunc, "Операторы ввода/вывода" в perlop.

© 1993–2021 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.34.0/FileHandle

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API