Perl podusage 生成带有额外 control-O 的手册页

Perl podusage 生成带有额外 control-O 的手册页

我正在 Perl 脚本中使用pod2usage来生成手册页。代码如下所示:

use Pod::Usage;
pod2usage(-verbose => 2) ;
exit 0 ;
... some code ...
__END__                                                                                                                             

=head1 NAME                                                                                                                         

my-program - program to do things                                                                   

=head1 SYNOPSIS                                                                                                                     

B<my-program> ( help | status | version )                                                                              

B<my-program> ( lock I<reason> )                                                                                                

B<my-program> ( unlock [I<username | ALL>] ) 

当我运行该程序时,我得到了手册页,但它看起来像这样:

NAME^O
    my-program - program to do things

SYNOPSIS^O
    my-program^O ( facter | help | status | version )

    my-program^O ( lock reason^O )

    my-program^O ( unlock [username | ALL^O] )

在上面,单词是粗体并带有下划线,但^O后面有这些。他们为什么在那里?

请注意,如果我制作一个简单的手册页(例如,man man),则粗体或下划线的单词没有^O后缀。

这是在 bash shell 中的 Debian 拉伸机上发生的,term变量设置为linux

答案1

我可以(令人惊讶地)在 OpenBSD 上重现您的问题,并将其TERM设置为linux(或rxvt)。TERM设置为、vt100screentmux其他xterm常见终端时,我没有问题,并且^O字符不显示。

我能够找到的与终端功能相关的唯一相关信息是Pod::Text,它Pod::Usage使用,用过的使用termcap重写之前的序列。对于,如果使用默认格式进行格式化,或者按照文档中的说明使用,TERM=linux似乎没有任何区别:Pod::UsagePod::TextPod::Text::TermcapPod::Usage

默认的文本格式化程序是Pod::Text.Pod::Usage可以通过预先设置来定义基类$Pod::Usage::Formatter 加载 Pod::Usage,例如:

BEGIN { $Pod::Usage::Formatter = 'Pod::Text::Termcap'; }
use Pod::Usage qw(pod2usage);

确保TERM为您正在使用的终端正确设置变量。大多数终端都可以与xterm或配合使用,尽管在或xterm-color中运行的会话应该有(两个程序默认都强制执行此操作)。screentmuxTERM=screen

相关内容