您可以签perlmodlib
入一个子:
my %_stdmod;
sub is_standard_module {
my($module) = @_;
unless (keys %_stdmod) {
chomp(my $perlmodlib = `perldoc -l perlmodlib`);
die "cannot locate perlmodlib\n" unless $perlmodlib;
open my $fh, "<", $perlmodlib
or die "$0: open $perlmodlib: $!\n";
while (<$fh>) {
next unless /^=head\d\s+Pragmatic\s+Modules/ ..
/^=head\d\s+CPAN/;
if (/^=item\s+(\w+(::\w+)*)/) {
++$_stdmod{ lc $1 };
}
}
}
exists $_stdmod{ lc $module } ? $module : ();
}
示例用法:
die "Usage: $0 module..\n" unless @ARGV;
foreach my $mod (@ARGV) {
my $stdmod = is_standard_module $mod;
print "$0: $mod is ", ($stdmod ? "" : "not "), "standard\n";
}
输出:
$ ./isstdmod 线程::shared AnyDBM_File CGI LWP::Simple
./isstdmod:threads::shared 是标准的
./isstdmod: AnyDBM_File 是标准的
./isstdmod:CGI 是标准的
./isstdmod: LWP::Simple 不是标准的
perldoc
绝对是 Perl 真正核心和标准安装的一部分。例如,perl-5.10.1 的源代码分发包含
这不是新增内容。Perl-5.6.0,大约十年前,perlmodlib
作为其真正核心的标准安装的一部分。
不包含这些项目的安装是非标准的。是的,我很欣赏从您的角度来看这似乎是学术性的,但是您的供应商的包装允许进行非标准安装,这会破坏其他工作程序。
使用 Debian 的包管理器,您可以获得标准的 Perl 安装
$ apt-get --install-recommends 安装 perl