in reply to Re^8: Restrict file search within current filessystem using wanted subroutine
in thread Restrict file search within current filessystem using wanted subroutine
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.)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^10: Restrict file search within current filessystem using wanted subroutine
by Anonymous Monk on May 18, 2016 at 18:32 UTC | |
by haukex (Archbishop) on May 18, 2016 at 19:37 UTC |