FileCache

NAME
SYNOPSIS
DESCRIPTION
CAVEATS
BUGS

NAME

FileCache − keep more files open than the system permits

SYNOPSIS

    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;

DESCRIPTION

The "cacheout" function will make sure that there’s a filehandle open for reading or writing available as the pathname you give it. It automatically closes and re-opens files if you exceed your system’s maximum number of file descriptors, or the suggested maximum maxopen.
cacheout EXPR

The 1−argument form of cacheout will open a file for writing ('>') on it’s first use, and appending ('>>') thereafter.

Returns EXPR on success for convenience. You may neglect the return value and manipulate EXPR as the filehandle directly if you prefer.

cacheout MODE , EXPR

The 2−argument form of cacheout will use the supplied mode for the initial and subsequent openings. Most valid modes for 3−argument "open" are supported namely; '>', '+>', '<', '<+', '>>', '|−' and '−|'

To pass supplemental arguments to a program opened with '|−' or '−|' append them to the command string as you would system EXPR .

Returns EXPR on success for convenience. You may neglect the return value and manipulate EXPR as the filehandle directly if you prefer.

CAVEATS

While it is permissible to "close" a FileCache managed file, do not do so if you are calling "FileCache::cacheout" from a package other than which it was imported, or with another module which overrides "close". If you must, use "FileCache::cacheout_close".

Although FileCache can be used with piped opens (’−|’ or ’|−’) doing so is strongly discouraged. If FileCache finds it necessary to close and then reopen a pipe, the command at the far end of the pipe will be reexecuted − the results of performing IO on FileCache’d pipes is unlikely to be what you expect. The ability to use FileCache on pipes may be removed in a future release.

FileCache does not store the current file offset if it finds it necessary to close a file. When the file is reopened, the offset will be as specified by the original "open" file mode. This could be construed to be a bug.

The module functionality relies on symbolic references, so things will break under ’use strict’ unless ’no strict "refs"’ is also specified.

BUGS

sys/param.h lies with its "NOFILE" define on some systems, so you may have to set maxopen yourself.