Spec-Zone.ru › Perl 5.38

Файловый кэш

СОДЕРЖАНИЕ

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

НАЗВАНИЕ

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 использует предоставленный режим для начального и последующих открытий. Поддерживаются большинство допустимых режимов для 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–2023 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.38.0/FileCache

Spec-Zone.ru

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