in reply to Determine files added/removed (code for magazine article)
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.
|
|---|