Perl 5 version 8.0 documentation



FileCache - keep more files open than the system permits


  1. use FileCache;
  2. # or
  3. use FileCache maxopen => 16;
  4. cacheout $path;
  5. print $path @data;
  6. cacheout $mode, $path;
  7. 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.

  • cacheout EXPR

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

  • 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 '-|'


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.