Perl::PrereqScanner(3) User Contributed Perl Documentation Perl::PrereqScanner(3)

```
  my $prereqs = $scanner->scan_string( $perl_code );
```

Given a string containing Perl source code, this method returns a CPAN::Meta::Requirements object describing the modules it requires.

This method will throw an exception if PPI fails to parse the code.

**Warning!** It isn't entirely clear whether PPI prefers to receive strings as octet strings or character strings. For now, my advice is to pass octet strings.

```
  my $prereqs = $scanner->scan_file( $path );
```

Given a file path to a Perl document, this method returns a CPAN::Meta::Requirements object describing the modules it requires.

This method will throw an exception if PPI fails to parse the code.

```
  my $prereqs = $scanner->scan_ppi_document( $ppi_doc );
```

Given a PPI::Document, this method returns a CPAN::Meta::Requirements object describing the modules it requires.

```
  my $prereqs = $scanner->scan_module( $module_name );
```

Given the name of a module, eg 'PPI::Document', this method returns a CPAN::Meta::Requirements object describing the modules it requires.

# [SYNOPSIS](#SYNOPSIS)

```
  use Perl::PrereqScanner;
  my $scanner = Perl::PrereqScanner->new;
  my $prereqs = $scanner->scan_ppi_document( $ppi_doc );
  my $prereqs = $scanner->scan_file( $file_path );
  my $prereqs = $scanner->scan_string( $perl_code );
  my $prereqs = $scanner->scan_module( $module_name );
```

# [DESCRIPTION](#DESCRIPTION)

The scanner will extract loosely your distribution prerequisites from your files.

The extraction may not be perfect but tries to do its best. It will currently find the following prereqs:

## [Scanner Plugins](#Scanner_Plugins)

Perl::PrereqScanner works by running a series of scanners over a PPI::Document representing the code to scan. By default the "Perl5", "Moose", "TestMore", "POE", and "Aliased" scanners are run. You can supply your own scanners when constructing your PrereqScanner:

```
  # Us only the Perl5 scanner:
  my $scanner = Perl::PrereqScanner->new({ scanners => [ qw(Perl5) ] });
  # Use any stock scanners, plus Example:
  my $scanner = Perl::PrereqScanner->new({ extra_scanners => [ qw(Example) ] });
```

# [SEE ALSO](#SEE_ALSO)

scan-perl-prereqs, in this distribution, is a command-line interface to the scanner

# [POD ERRORS](#POD_ERRORS)

Hey! **The above document had some coding errors, which are explained below:**

[Around line 56:](#Around)

Unknown directive: =method

[Around line 79:](#Around~2)

Unknown directive: =method

[Around line 99:](#Around~3)

Unknown directive: =method

[Around line 120:](#Around~4)

Unknown directive: =method

2026-10-26 perl v5.44.0

---

Document: Perl::PrereqScanner(3pm) from perl-perl-prereqscanner 1.100-r7 (Chainguard OS)
Source: https://github.com/rjbs/Perl-PrereqScanner
