Perl::PrereqScanner::NotQuiteLite - a tool to scan your Perl code for its prerequisites
use Perl::PrereqScanner::NotQuiteLite; my $scanner = Perl::PrereqScanner::NotQuiteLite->new( parsers => [qw/:installed -UniversalVersion/], suggests => 1, perl_minimum_version => 1, ); my $context = $scanner->scan_file('path/to/file'); my $requirements = $context->requires; my $recommends = $context->recommends; my $suggestions = $context->suggests; # requirements in evals my $noes = $context->noes;
Perl::PrereqScanner::NotQuiteLite is yet another prerequisites scanner. It passes almost all the scanning tests for Perl::PrereqScanner and Module::ExtractUse (ie. except for a few dubious ones), and runs slightly faster than PPI-based Perl::PrereqScanner. However, it doesn't run as fast as Perl::PrereqScanner::Lite (which uses an XS lexer).
Perl::PrereqScanner::NotQuiteLite also recognizes eval. Prerequisites in eval are not considered as requirements, but you can collect them as suggestions.
eval
Conditional requirements or requirements loaded in a block are treated as recommends. Noed modules are stored separately (since 0.94). You may or may not need to merge them into requires.
Perl::PrereqScanner::NotQuiteLite can also recognize some of the new language features such as say, subroutine signatures, and postfix dereferences, to improve the minimum perl requirement (since 0.9905).
say
creates a scanner object. Options are:
By default, Perl::PrereqScanner::NotQuiteLite only recognizes modules loaded directly by use, require, no statements, plus modules loaded by a few common modules such as base, parent, if (that are in the Perl core), and by two keywords exported by Moose family (extends and with).
use
require
no
base
parent
if
extends
with
If you need more, you can pass extra parser names to the scanner, or :bundled, which loads and registers all the parsers bundled with this distribution. If you have your own parsers, you can specify :installed to load and register all the installed parsers.
:bundled
:installed
You can also pass a project-specific parser (that lies outside the Perl::PrereqScanner::NotQuiteLite::Parser namespace) by prepending + to the name.
Perl::PrereqScanner::NotQuiteLite::Parser
+
use Perl::PrereqScanner::NotQuiteLite; my $scanner = Perl::PrereqScanner::NotQuiteLite->new( parsers => [qw/+PrereqParser::For::MyProject/], );
If you don't want to load a specific parser for some reason, prepend - to the parser name.
-
Perl::PrereqScanner::NotQuiteLite ignores use-like statements in eval by default. If you set this option to true, Perl::PrereqScanner::NotQuiteLite also parses statements in eval, and records requirements as suggestions.
Perl::PrereqScanner::NotQuiteLite usually ignores require-like statements in a block by default. If you set this option to true, Perl::PrereqScanner::NotQuiteLite also records requirements in a block as recommendations.
If you set this option to true, Perl::PrereqScanner::NotQuiteLite adds a specific version of perl as a requirement when it finds some of the new perl language features.
takes a path to a file and returns a ::Context object.
takes a string, scans and returns a ::Context object.
Perl::PrereqScanner, Perl::PrereqScanner::Lite, Module::ExtractUse
Perl::PrereqScanner::NotQuiteLite::App to scan a whole distribution.
scan-perl-prereqs-nqlite is a command line interface of the above.
Kenichi Ishigaki, <ishigaki@cpan.org>
This software is copyright (c) 2015 by Kenichi Ishigaki.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Perl::PrereqScanner::NotQuiteLite, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Perl::PrereqScanner::NotQuiteLite
CPAN shell
perl -MCPAN -e shell install Perl::PrereqScanner::NotQuiteLite
For more information on module installation, please visit the detailed CPAN module installation guide.