FileCache - keep more files open than the system permits
use FileCache; # or use FileCache maxopen => 16;
cacheout $path; print $path @data;
cacheout $mode, $path; print $path @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.
'>'
)
on it's first use, and appending ('>>'
) thereafter.
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 '-|'
If you use cacheout with '|-'
or '-|'
you should catch SIGPIPE
and explicitly close the filehandle., when it is closed from the
other end some cleanup needs to be done.
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
.
sys/param.h lies with its NOFILE
define on some systems,
so you may have to set maxopen ($FileCache::cacheout_maxopen) yourself.