根据CPAN Frequently Asked Questions:
每次在系统上安装模块时,它都会附加信息 到名为
的文件perllocal.pod
我使用cpanm
安装了几个CPAN模块,问题是某些模块没有在perllocal.pod
中注册。例如,我使用cpanm
安装了String::Escape,String::ShellQuote和String::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
在安装模块时没有注册它(出于某种未知原因)。
答案 0 :(得分:1)
这是String :: Util中Makefile.PL的错误;通过在WriteMakefile中使用中间变量,它可以阻止App :: cpanminus中的解析。
我建议您将其记录为bug - 它有一个简单的解决方法:只是不要使用变量。