Файловый кэш
СОДЕРЖАНИЕ
ИМЯ
Файловый кэш — удерживает больше открытых файлов, чем позволяет система
СИНОПСИС
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