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.