Hi Anonymous,
The issue is that if you tell your script to search a relative pathname (such as the default "."), then $File::Find::name will not be an absolute pathname either. Have a look at the Basic debugging checklist - this tells you that you should print your values, such as print $File::Find::name;, and you can find this out for yourself.
One way to fix this: 1. At the top of your script, add "use File::Spec::Functions qw/rel2abs/;" (see the function rel2abs in File::Spec), and 2. replace "shift || '.'" with "rel2abs(shift || '.')" - now all your search paths and therefore $File::Find::name should be absolute pathnames.
If it's just that one specific file, a regex is not necessary and you can use an exact match to exclude it: return if $File::Find::name eq '/var/log/test.out';
Hope this helps,
-- Hauke D
(P.S. I'm assuming that it's obvious that the regex /^\/var\/log\/lastlog/ won't help in excluding a file named test.out and that you just got your examples mixed up.)
In reply to Re^9: Restrict file search within current filessystem using wanted subroutine
by haukex
in thread Restrict file search within current filessystem using wanted subroutine
by madparu
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |