foreach my $file2(@file2only) { unless (($file2 =~ "tmp") or ($file2=~"temp") or ($file2 =~ "recycler") or ($file2 =~ "history")) { print OUT $file2; } }
I still see a problem pointed out in the original thread with your use of regular expressions to disclude certain files. $file2 =~ "history" and $file2 =~ "temp" for example, matches any file containing the word "history" or "temp" in part of it's path. This could very well include critical data like "account_history", or "form_templates". I'm not sure what the output per file looks like as the block loops through @file2only, but if it's a full directory path you could do something like:
c:\\account_history\important_variations.txt
foreach my $file2 (@file2only) { my $flag = undef; my @dir_struct = split('\',$file2); foreach my $item (@dir_struct) { $flag = 'skip' if ($item =~ /^(temp|recycle|history)$/); last if ($flag eq 'skip'); } print OUT $file2 unless ($flag eq 'skip'); }
I know you're going for simplicity here, and this adds alot to explain, but this is just a quick, plausible solution to show how the code can be made more "production-ready". I haven't tested the above btw, and split wont split the beginning part of the path very cleanly, but there's nothing relevant there anyway as far as the match is concerned.
In reply to Re: Determine files added/removed (code for magazine article)
by fluxion
in thread Determine files added/removed (code for magazine article)
by McMahon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |