NAME
File::Find::Match - Perform different actions on files based on file name.
SYNOPSIS
#!/usr/bin/perl
use strict;
use warnings;
use File::Find::Match qw( :constants );
use lib 'blib';
my $finder = new File::Find::Match;
$finder->rules(
qr/\.svn/ => sub { IGNORE },
qr/_build/ => sub { IGNORE },
qr/\bblib\b/ => sub { IGNORE },
qr/\.pm$/ => sub {
print "Perl module: $_\n";
MATCH;
},
qr/\.pl$/ => sub {
print "This is a perl script: $_\n";
PASS; # let the following rules have a crack at it.
},
qr/filer\.pl$/ => sub {
print "myself!!! $_\n";
MATCH;
},
dir => sub {
print "Directory: $_\n";
MATCH;
},
);
$finder->find('.');
DESCRIPTION
This module is allows one to recursively process files and directories based on the filename. It is meant to be more flexible than File::Find.
METHODS
new(%opts)
Creates a new File::Find::Match
object. Currently %opts is ignored.
rules($predicate => $action, ...)
rules() accpets a list of $predicate => $action pairs.
See "PREDICATES AND ACTIONS" for a detailed description.
rule($predicate => $action)
This is just an alias to rules().
find(@dirs)
Start the breadth-first search of @dirs (defaults to '.' if empty) using the specified rules.
The return value of this function is unimportant.
PREDICATES AND ACTIONS
A predicate is one of: a Regexp reference from qr//
, a subroutine reference, or a string. An action is a subroutine reference that is called on a filename when a predicate matches it.
Naturally for regexp predicates, matching occures when the pattern matches the filename.
For coderef predicates, $_ is set to the filename and the subroutine is called. If it returns a true value, the predicate is true. Else the predicate is false.
When the predicate is a string, it must be one of "file"
, "dir"
, or "default"
. The "file"
predicate is true when the current filename is a file, in the -f
sense. The "dir"
predicate is true when the filename is a dir in the -d
sense, The "default"
predicate is always true.
AUTHOR
Dylan William Hardison <dhardison@cpan.org>
File::Find, http://dylan.hardison.net
COPYRIGHT
Copyright (C) 2004 Dylan William Hardison. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.