in reply to Behavior of File::Find's preprocess and glob
It appears that find_function($dirname) is actually called before (or after, depending on your options) the "wanted" function is called so you need to filter directories out in find_function.
If you do filter our directory names in the "preprocess" function then you'll prevent File::Find from recursing into those directories.
Update: d'oh! mixed up the function names..
#!/usr/bin/perl -w use strict; use Cwd; use File::Find; my $filespec = qr/\.(?:txt|pl)$/; my $dir = $ARGV[0] || getcwd(); find( { wanted => \&find_function, preprocess => \&globber }, $dir ); sub find_function { return if (-d $File::Find::name); print $File::Find::name.$/; } sub globber{ my @files; foreach(@_){ push(@files, $_) if (/$filespec/ || (-d $_)); } return @files; }
cheers,
J
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Behavior of File::Find's preprocess and glob
by hsinclai (Deacon) on Feb 04, 2005 at 02:13 UTC | |
by edoc (Chaplain) on Feb 04, 2005 at 02:30 UTC | |
by hsinclai (Deacon) on Feb 04, 2005 at 02:43 UTC |
In Section
Seekers of Perl Wisdom