---
name: "File::Find::Rule::Perl"
section: "3pm"
platform: "linux"
package: "perl-file-find-rule-perl"
version: "1.16-7"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/File::Find::Rule::Perl"
---

# File::Find::Rule::Perl(3pm)

Common rules for searching for Perl things

## NAME

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

## SYNOPSIS

```
  use File::Find::Rule       ();
  use File::Find::Rule::Perl ();

  # Find all Perl files smaller than 10k
  my @files = File::Find::Rule->perl_file
                              ->size('<10Ki')
                              ->in('dir');

  # Locate all the modules that PAUSE will index
  my @mod = File::Find::Rule->no_index
                            ->perl_module
                            ->in('My-Distribution');
```

## DESCRIPTION

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.

## METHODS

### perl\_module

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.

### perl\_test

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.

### perl\_installer

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

### perl\_script

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.

### perl\_file

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.

### no\_index

```
  # Provide the rules directly
  $rule->no_index(
      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.

## SUPPORT

Bugs should always be submitted via the CPAN bug tracker

\<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-Find-Rule-Perl\>

For other issues, contact the maintainer

## AUTHOR

Adam Kennedy \<adamk@cpan.org\>

## SEE ALSO

\<http://ali.as/\>, File::Find::Rule, File::Find::Rule::PPI

## COPYRIGHT

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.
