我正在 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
设置为、vt100
、screen
或tmux
其他xterm
常见终端时,我没有问题,并且^O
字符不显示。
我能够找到的与终端功能相关的唯一相关信息是Pod::Text
,它Pod::Usage
使用,用过的使用termcap
重写之前的序列。对于,如果使用默认格式进行格式化,或者按照文档中的说明使用,TERM=linux
似乎没有任何区别:Pod::Usage
Pod::Text
Pod::Text::Termcap
Pod::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
中运行的会话应该有(两个程序默认都强制执行此操作)。screen
tmux
TERM=screen