-
-
17 Nov 2017 07:02:56 UTC
- Distribution: Perl-PrereqScanner-Lite
- Module version: 0.28
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues
- Testers (1051 / 603 / 48)
- Kwalitee
Bus factor: 1- 96.91% Coverage
- License: perl_5
- Perl: v5.8.5
- Activity
24 month- Tools
- Download (17.55KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- NAME
- SYNOPSIS
- DESCRIPTION
- METHODS
- ADDITIONAL NOTATION
- SPEED COMPARISON
- NOTES
- SEE ALSO
- LICENSE
- AUTHOR
NAME
Perl::PrereqScanner::Lite - Lightweight Prereqs Scanner for Perl
SYNOPSIS
use Perl::PrereqScanner::Lite; my $scanner = Perl::PrereqScanner::Lite->new; $scanner->add_extra_scanner('Moose'); # add extra scanner for moose style my $modules = $scanner->scan_file('path/to/file');
DESCRIPTION
Perl::PrereqScanner::Lite is the lightweight prereqs scanner for perl. This scanner uses Compiler::Lexer as tokenizer, therefore processing speed is really fast.
METHODS
new($opt)
Create a scanner instance.
$opt
must be hash reference. It accepts following keys of hash:extra_scanners
It specifies extra scanners. This item must be array reference.
e.g.
my $scanner = Perl::PrereqScanner::Lite->new( extra_scanners => [qw/Moose Version/] );
See also "add_extra_scanner($scanner_name)".
no_prereq
It specifies to use
## no prereq
or not. Please see also "ADDITIONAL NOTATION".
scan_file($file_path)
Scan and figure out prereqs which is instance of
CPAN::Meta::Requirements
by file path.scan_string($string)
Scan and figure out prereqs which is instance of
CPAN::Meta::Requirements
by source code string written in perl.e.g.
open my $fh, '<', __FILE__; my $string = do { local $/; <$fh> }; my $modules = $scanner->scan_string($string);
scan_module($module_name)
Scan and figure out prereqs which is instance of
CPAN::Meta::Requirements
by module name.e.g.
my $modules = $scanner->scan_module('Perl::PrereqScanner::Lite');
scan_tokens($tokens)
Scan and figure out prereqs which is instance of
CPAN::Meta::Requirements
by tokens of Compiler::Lexer.e.g.
open my $fh, '<', __FILE__; my $string = do { local $/; <$fh> }; my $tokens = Compiler::Lexer->new->tokenize($string); my $modules = $scanner->scan_tokens($tokens);
add_extra_scanner($scanner_name)
Add extra scanner to scan and figure out prereqs. This module loads extra scanner such as
Perl::PrereqScanner::Lite::Scanner::$scanner_name
if specifying scanner name through this method.If you want to specify an extra scanner from external package without
Perl::PrereqScanner::Lite::
prefix, you can prepend+
to$scanner_name
. Like so+Your::Awesome::Scanner
.Extra scanners that are default supported are followings;
ADDITIONAL NOTATION
If
no_prereq
is enabled bynew()
(like so:Perl::PrereqScanner::Lite->new({no_prereq => 1})
), this module recognize## no prereq
optional comment. The requiring declaration with this comment on the same line will be ignored as prereq.For example
use Foo; use Bar; ## no prereq
In this case
Foo
is the prereq, howeverBar
is ignored.SPEED COMPARISON
Plain
Rate Perl::PrereqScanner Perl::PrereqScanner::Lite Perl::PrereqScanner 8.57/s -- -97% Perl::PrereqScanner::Lite 246/s 2770% --
With Moose scanner
Rate Perl::PrereqScanner Perl::PrereqScanner::Lite Perl::PrereqScanner 9.00/s -- -94% Perl::PrereqScanner::Lite 152/s 1587% --
NOTES
This is a quotation from https://github.com/moznion/Perl-PrereqScanner-Lite/issues/13.
Yes, it's true. This design is so ugly and not smart. So I have to redesign and reimplement this module, and I have some plans.
If you have a mind to expand this module by implementing external scanner, please be careful. Every
scan_*
calls must not affect to any others through the singleton of this module (called it$c
in https://github.com/moznion/Perl-PrereqScanner-Lite/blob/c03638b2e2a39d92f4d7df360af5a6be65dc417a/lib/Perl/PrereqScanner/Lite/Scanner/Moose.pm#L8).SEE ALSO
Perl::PrereqScanner, Compiler::Lexer
LICENSE
Copyright (C) moznion.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
moznion <moznion@gmail.com>
Module Install Instructions
To install Perl::PrereqScanner::Lite, copy and paste the appropriate command in to your terminal.
cpanm Perl::PrereqScanner::Lite
perl -MCPAN -e shell install Perl::PrereqScanner::Lite
For more information on module installation, please visit the detailed CPAN module installation guide.