7.17. Caching Open Output FilehandlesProblemYou need more output files open simultaneously than your system allows. SolutionUse the standard FileCache module: use FileCache; cacheout ($path); # each time you use a filehandle print $path "output"; Discussion
FileCache's
The
Example 7.8
splits an
xferlog
file created by the popular
wuftpd
FTP server into files named after the authenticated user. The fields in Example 7.8: splitwulog#!/usr/bin/perl # splitwulog - split wuftpd log by authenticated user use FileCache; $outdir = '/var/log/ftp/by-user'; while (<>) { unless (defined ($user = (split)[-4])) { warn "Invalid line: $.\n"; next; } $path = "$outdir/$user"; cacheout $path; print $path $_; } See Also
Documentation for the standard FileCache module (also in
Chapter 7
of
Programming Perl
); the Copyright © 2002 O'Reilly & Associates. All rights reserved. |
|