#check each file in logs directory
my @to_move;
foreach my $file (@files) {
$file eq '.' || $file eq '..'
or push @to_move, $file;
}
The code in this section is a bit hard to read. A more readable way would be something like:
#check each file in logs directory
my @to_move;
foreach my $file (@files) {
next if $file =~ /^\.\.?$/;
push @to_move, $file;
}
Or better yet, remove this part, and add it to the readdir earlier.
my @files = grep { -M "$log_dir/$_" > 1 && !/^\.\.?$/ } readdir(LOGS);
A few other things:
- Use the LIST form of system when you are able to: system "gzip", $file
- chdir to the log dir once at the start of the script instead of once for each file processed
- In the else block you use $! but there is no guarantee that it will be set to a valid value before hand. You know at that point that the file is a symbolic link, so just print that.
- Nit Pick: You seem to use 2 different indent styles, one for the foreach and another for the if (You indent the body of one, but not the other). It usually helps to be consistant.
|