Spec-Zone.ru › Perl 5.32

Файловый кэш

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНОПСИС
  • ОПИСАНИЕ
  • ОСОБЕННОСТИ
  • ОШИБКИ

ИМЯ

Файловый кэш — удерживает больше открытых файлов, чем позволяет система

СИНОПСИС

no strict 'refs';

use FileCache;
# or
use FileCache maxopen => 16;

cacheout $mode, $path;
# or
cacheout $path;
print $path @data;

$fh = cacheout $mode, $path;
# or
$fh = cacheout $path;
print $fh @data;

ОПИСАНИЕ

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

cacheout EXPR

Форма cacheout с 1 аргументом откроет файл для записи ('>') при первом использовании и добавит ('>>') в последующих.

Для удобства возвращает EXPR в случае успеха. Вы можете пропустить возвращаемое значение и работать с EXPR непосредственно как с файловым дескриптором, если предпочитаете.

cacheout MODE, EXPR

Форма cacheout с 2 аргументами будет использовать предоставленный режим для начального и последующих открытий. Поддерживаются большинство допустимых режимов для 3-аргументного open, а именно: '>', '+>', '<', '<+', '>>', '|-' и '-|' .

Чтобы передать дополнительные аргументы программе, открытой с '|-' или '-|' , добавьте их к строке команды, как вы бы делали с командой system EXPR.

Для удобства возвращает EXPR в случае успеха. Вы можете пропустить возвращаемое значение и работать с EXPR непосредственно как с файловым дескриптором, если предпочитаете.

ОСОБЕННОСТИ

Хотя разрешается close управляемый FileCache файл, не делайте этого, если вы вызываете FileCache::cacheout из пакета, отличного от того, в котором он импортирован, или с другим модулем, который переопределяет close. Если это необходимо, используйте FileCache::cacheout_close.

Хотя FileCache может использоваться с открытием через трубу ('-|' или '|-'), от этого следует избегать. Если FileCache сочтёт необходимым закрыть, а затем повторно открыть трубу, команда на дальнем конце трубы будет повторно выполнена — результаты выполнения ввода-вывода на трубах FileCache вряд ли будут такими, как вы ожидаете. Возможность использования FileCache для труб может быть удалена в будущих версиях.

FileCache не сохраняет текущую позицию в файле, если считает необходимым закрыть файл. При повторном открытии файла позиция будет такой, как указано в первоначальном режиме файла open. Это можно рассматривать как ошибку.

Функциональность модуля зависит от символических ссылок, поэтому всё сломается под 'use strict', если также не указано 'no strict "refs"'.

ОШИБКИ

sys/param.h содержит своё определение NOFILE на некоторых системах, поэтому вам может потребоваться самостоятельно установить maxopen.

© 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.30.3/FileCache

Spec-Zone.ru

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