++ed by:
Adam Kennedy


File::Find::Rule::Perl - Common rules for searching for Perl things


  use File::Find::Rule       ();
  use File::Find::Rule::Perl ();
  # Find all Perl files smaller than 10k
  my @files = File::Find::Rule->perl_file
  # Locate all the modules that PAUSE will index
  my @mod = File::Find::Rule->no_index


I write a lot of things that muck with Perl files. And it always annoyed me that finding "perl files" requires a moderately complex File::Find::Rule pattern.

File::Find::Rule::Perl provides methods for finding various types Perl-related files, or replicating search queries run on a distribution in various parts of the CPAN ecosystem.



The perl_module rule locates perl modules. That is, files that are named *.pm.

This rule is equivalent to ->file->name( '*.pm' )> and is included primarily for completeness.


The perl_test rule locates perl test scripts. That is, files that are named *.t.

This rule is equivalent to ->file->name( '*.t' )> and is included primarily for completeness.


The perl_installer rule locates perl distribution installers. That is, it locates Makefile.PL and Build.PL files.


The perl_script rule locates perl scripts.

This is any file that ends in .pl, or any files without extensions that have a perl "hash-bang" line.


The perl_file rule locates all files containing Perl code.

This includes all the files matching the above perl_module, perl_test, perl_installer and perl_script rules.


  # Provide the rules directly
      directory => [ 'inc', 't', 'examples' ],
      file      => [ 'Foo.pm', 'lib/Foo.pm' ],
  # Provide a META.yml to use
  $rule->no_index( 'META.yml' );
  # Provide a dist root directory to look for a META.yml in
  $rule->no_index( 'My-Distribution' );
  # Automatically pick up a META.yml from the target directory
  $rule->no_index->in( 'My-Distribution' );

The no_index method applies a set of rules as per the no_index section in a META.yml file.


Bugs should always be submitted via the CPAN bug tracker


For other issues, contact the maintainer


Adam Kennedy <adamk@cpan.org>


http://ali.as/, File::Find::Rule, File::Find::Rule::PPI


Copyright 2006 - 2012 Adam Kennedy.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

Hosting generously
sponsored by Bytemark