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      => [ '', 'lib/' ],
  # 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 <>

SEE ALSO, 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.