Вы можете проверить 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 threads::shared AnyDBM_File CGI LWP::Simple
./isstdmod: threads::shared is standard
./isstdmod: AnyDBM_File is standard
./isstdmod: CGI is standard
./isstdmod: LWP::Simple is not standard
perldoc
определенно является частью истинного ядра Perl и стандартной установки. Например, исходный дистрибутив для perl-5.10.1 содержит
perldoc.PL
, генерирует perldoc
как часть стандартной установки
perlmodlib.PL
, генерирует perlmodlib.pod
как часть стандартной установки
Это не новое дополнение. Perl-5.6.0, около десяти лет, имел perlmodlib
как часть его стандартной базовой установки.
Установки, которые не содержат эти элементы, являются нестандартными. Да, я ценю, что это может показаться академичным с вашей точки зрения, но упаковка вашего поставщика допускает нестандартную установку, которая нарушает работу других программ.
С помощью диспетчера пакетов Debian вы можете получить стандартную установку Perl с помощью
$ apt-get --install-recommends install perl