FreeBSD Manual Pages
Perl::PrereqScanner::LUser3Contributed Perl DocumePerl::PrereqScanner::Lite(3) 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: o 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)". o 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; o Perl::PrereqScanner::Lite::Scanner::Moose o Perl::PrereqScanner::Lite::Scanner::Version ADDITIONAL NOTATION If "no_prereq" is enabled by "new()" (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, however "Bar" 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> perl v5.32.1 2022-03-26 Perl::PrereqScanner::Lite(3)
NAME | SYNOPSIS | DESCRIPTION | METHODS | ADDITIONAL NOTATION | SPEED COMPARISON | NOTES | SEE ALSO | LICENSE | AUTHOR
Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Perl::PrereqScanner::Lite&sektion=3&manpath=FreeBSD+13.1-RELEASE+and+Ports>