FileCache
СОДЕРЖАНИЕ
ИМЯ
FileCache — для поддержания открытых файлов свыше лимита системы
СИНОПСИС
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 откроет файл для записи (
'>') при первом использовании и добавления ('>>') в последующих.Для удобства возвращает EXPR при успехе. Возвращаемое значение можно игнорировать и работать с EXPR как с файловым дескриптором.
- cacheout MODE, EXPR
-
Двухаргументная форма cacheout использует заданный режим для начального и последующих открытий. Поддерживаются большинство допустимых режимов для трёх-аргументной
open, а именно;'>','+>','<','<+','>>','|-'и'-|'.Для передачи дополнительных аргументов в программу, открываемую с помощью
'|-'или'-|', добавьте их в строку команды, как при использовании system EXPR.Для удобства возвращает EXPR при успехе. Возвращаемое значение можно игнорировать и работать с EXPR как с файловым дескриптором.
ОСОБЕННОСТИ
Хотя разрешается close файл, управляемый FileCache, не делайте этого, если вы вызываете FileCache::cacheout из пакета, отличного от того, из которого он был импортирован, или с другим модулем, который переопределяет close. Если это необходимо, используйте FileCache::cacheout_close.
Хотя FileCache может использоваться с открытием через трубы ('-|' или '|-'), это настоятельно не рекомендуется. Если FileCache посчитает необходимым закрыть, а затем повторно открыть трубу, команда на противоположном конце трубы будет повторно выполнена — результаты выполнения ввода-вывода на FileCache'd трубах вряд ли соответствуют вашим ожиданиям. Возможность использования 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.28.3/FileCache