Perldoc中关于perllocale的错误是什么?

时间:2015-06-19 16:14:01

标签: macos perl debugging documentation locale

我正在讨论here关于在Perl中没有设置语言环境的问题,并建议在OSX Yosemite 10.10.3中运行此perldoc perllocale,但我收到错误:

Error while formatting with Pod::Perldoc::ToMan:

 at /System/Library/Perl/5.18/Pod/Perldoc.pm line 1346.


 at /usr/bin/perldoc5.18 line 11.
Got a 0-length file from /System/Library/Perl/5.18/pods/perllocale.pod via Pod::Perldoc::ToMan!?

 at /usr/bin/perldoc5.18 line 11.

which perldoc给出了/usr/bin/perldoc所以应该是正确的。 echo $PATH给出了

/usr/local/bin:/usr/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin:/usr/texbin:/Users/masi/.cabal/bin 

我注意到那里有两次文件夹,但可能的覆盖不应该是问题的原因。 我的.bashrc为空,.profile只有export LANG=en_US.UTF-8

这个Perldoc错误是什么意思?

2 个答案:

答案 0 :(得分:3)

我在OSX Yosemite 10.10.3上得到了完全相同的错误

bessarabov@bessarabov-osx:~$ perldoc perllocale
Error while formatting with Pod::Perldoc::ToMan:

 at /System/Library/Perl/5.18/Pod/Perldoc.pm line 1346.


 at /usr/bin/perldoc5.18 line 11.
Got a 0-length file from /System/Library/Perl/5.18/pods/perllocale.pod via Pod::Perldoc::ToMan!?

 at /usr/bin/perldoc5.18 line 11.
bessarabov@bessarabov-osx:~$

命令perldoc -l perllocale显示文件的路径:

bessarabov@bessarabov-osx:~$ perldoc -l perllocale
/System/Library/Perl/5.18/pods/perllocale.pod
bessarabov@bessarabov-osx:~$

该文件不为空,我已将其保存到https://gist.github.com/bessarabov/20370992150a332dc0f0

OSX Yosemite 10.10.3有perldoc版本3.19:

bessarabov@bessarabov-osx:~$ perl -MPod::Perldoc -E 'say $Pod::Perldoc::VERSION'
3.19
bessarabov@bessarabov-osx:~$

您可以运行PERLDOCDEBUG=5 perldoc perllocale查看一些调试信息 - 这是日志https://gist.github.com/bessarabov/6e09b4e491d5a00c6304,但它不是很有用。

我试图找出perldoc失败的原因。我没有确切的答案,但问题在于文件/System/Library/Perl/5.18/Pod/Perldoc/ToMan.pm中的这部分代码:

while( $offset <= $length ) {
    $self->debug( "Writing chunk $chunks\n" ); $chunks++;
    syswrite $writer, ${ $self->{_text_ref} }, $chunk_size, $offset
        or $self->die( $! );
    $offset += $chunk_size;
    ...
}

此循环的几个互动有效,但随后syswrite死亡,$!没有关于错误的信息。

我能够使用其他解析器阅读文档:

perldoc -MPod::Perldoc::ToText perllocale

解决此问题的另一种方法是更新到最新版本的Pod::Perldoc - perldoc 3.25可以正常使用此文件。

答案 1 :(得分:2)

猜测一下,我会说perllocale.pod文件应该是空格式的,该文件应该是pod格式的perllocale文档。

您可以在http://perldoc.perl.org/5.18.2/perllocale.html

在线阅读相同的文档