You forgot to both close your filehandles and your dirhandle. Rewritten, this should look like:
opendir LOG_DIR, '/home/www/' or die "Cannot opendir /home/www";
while (defined(my $subdir = readdir LOG_DIR)) {
open IN_FILE, '/home/www/'.$subdir.'/logs/weekly' ||
do {warn "Couldnt open home/www/$subdir/logs/weekly: $!"; next};
while (<IN_FILE>) {
#your code
}
close IN_FILE;
}
closedir LOG_DIR;
Yes, I know that Perl will implicitly close stuff for you, and that's fine for one-offs.
BUT ... if this is going to run more than once or possibly be looked at by someone else, do things explicitly! And, it doesn't matter that something is 0.01 CPU seconds slower. CPU is cheap! Human-time is
much more expensive, usually by a factor of 10,000 or more.
------
/me wants to be the brightest bulb in the chandelier!
Vote paco for President!
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.