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;
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.
The 1-argument form of cacheout will open a file for writing (
'>') on it's first use, and appending (
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;
If you use cacheout with
'-|' 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
sys/param.h lies with its
NOFILE define on some systems, so you may have to set maxopen ($FileCache::cacheout_maxopen) yourself.