|
FileCache - keep more files open than the system permits
use FileCache;
use FileCache maxopen => 16;
cacheout $mode, $path;
cacheout $path;
print $path @data;
$fh = cacheout $mode, $path;
$fh = cacheout $path;
print $fh @data;
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.
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.
sys/param.h lies with its NOFILE define on some systems,
so you may have to set maxopen yourself.
|