cpanm不会在perllocal.pod中注册所有已安装的模块

时间:2015-09-20 12:28:48

标签: perl cpanm perldoc

根据CPAN Frequently Asked Questions

  

每次在系统上安装模块时,它都会附加信息   到名为perllocal.pod

的文件

我使用cpanm安装了几个CPAN模块,问题是某些模块没有在perllocal.pod中注册。例如,我使用cpanm安装了String::EscapeString::ShellQuoteString::Util。如果我输入

$ perldoc -u perllocal | grep String::

我得到输出:

=head2 Tue Apr 21 16:47:34 2015: C<Module> L<String::Escape|String::Escape>
=head2 Thu Aug  6 18:51:04 2015: C<Module> L<String::ShellQuote|String::ShellQuote>

请注意,即使所有三个模块都安装在目录String::Util下,也会丢失/home/hakon/perl5/lib/perl5/。例如,如果我输入:

$ perldoc -l String::Util

我得到输出:

/home/hakon/perl5/lib/perl5/String/Util.pod

注意:该问题与perldoc无关。 perldoc命令只显示文件perllocal.pod中的Pod:

$ perldoc -l perllocal
/home/hakon/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/perllocal.pod

由于此文件不包含String::Util的任何Pod,因此问题可能是cpanm在安装模块时没有注册它(出于某种未知原因)。

1 个答案:

答案 0 :(得分:1)

这是String :: Util中Makefile.PL的错误;通过在WriteMakefile中使用中间变量,它可以阻止App :: cpanminus中的解析。

我建议您将其记录为bug - 它有一个简单的解决方法:只是不要使用变量。