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 с 1 аргументом откроет файл для записи (
'>') при первом использовании и добавления ('>>') в последующем.Для удобства возвращает EXPR в случае успеха. Вы можете проигнорировать возвращаемое значение и напрямую использовать EXPR как дескриптор файла, если предпочитаете.
- cacheout MODE, EXPR
-
Форма cacheout с 2 аргументами будет использовать предоставленный режим для начального и последующего открытия. Поддерживаются большинство допустимых режимов для
open, в частности;'>','+>','<','<+','>>','|-'и'-|'.Чтобы передать дополнительные аргументы программе, открытой с
'|-'или'-|', добавьте их к строке команды так же, как вы делаете это для system EXPR.Для удобства возвращает EXPR в случае успеха. Вы можете проигнорировать возвращаемое значение и напрямую использовать EXPR как дескриптор файла, если предпочитаете.
ОГРАНИЧЕНИЯ
Хотя разрешено close файл, управляемый FileCache, не делайте этого, если вы вызываете FileCache::cacheout из пакета, отличного от того, в котором он импортирован, или с другим модулем, который переопределяет close. Если необходимо, используйте FileCache::cacheout_close.
Хотя FileCache может использоваться с открытием через канал ('-|' или '|-'), это настоятельно не рекомендуется. Если FileCache сочтёт необходимым закрыть, а затем повторно открыть канал, команда на дальнем конце канала будет перезапущена — результаты выполнения IO на FileCache'd каналах вряд ли будут такими, как вы ожидаете. Возможность использования FileCache на каналах может быть удалена в будущих версиях.
FileCache не сохраняет текущее смещение файла, если обнаруживает необходимость закрытия файла. При повторном открытии файла смещение будет таким, как задано в исходном режиме файла open. Это можно рассматривать как ошибку.
Функциональность модуля зависит от символических ссылок, поэтому все сломается при использовании 'use strict', если не указано также 'no strict "refs"'.
ОШИБКИ
sys/param.h использует определение NOFILE на некоторых системах, поэтому вам может потребоваться установить maxopen самостоятельно.
© 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.36.0/FileCache