OS Manuals

Perl::PrereqScanner(3pm)

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.

  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 );

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:

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) ] });

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

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

Unknown directive: =method
Unknown directive: =method
Unknown directive: =method
Unknown directive: =method
2026-06-28 perl v5.42.2

perl-perl-prereqscanner 1.100-r5 · os · ingested 2026-09-30