FileHandle
СОДЕРЖАНИЕ
ИМЯ
FileHandle — методы объекта для работы с файловыми дескрипторами
СИНТАКСИС
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 по-прежнему будет работать.
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–2020 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.32.0/FileHandle