2016-02-16 13 views
1

我正嘗試使用pod2usage()將Pod文本輸出到終端。它適用於大多數情況,除了使用Pod格式化語法I<text>格式化爲斜體的文本。在這種情況下,我希望文本打印下劃線(這是直接使用Pod::Text::Termcap時的工作方式)。例如(prog.pl):無法打印來自pod2usage的斜體文本()

use strict; 
use warnings; 

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

case1_use_termcap_directly(); 
case2_use_termcap_indirectly(); 

sub case2_use_termcap_indirectly { 
    GetOptions(help => \my $help, test => \my $test); 
    if ($help) { 
     pod2usage(
      -message => "", 
      -verbose => 2, 
      -output => \*STDERR 
     ); 
    } 
} 

sub case1_use_termcap_directly { 
    my $parser = Pod::Text::Termcap->new(); 
    $parser->output_string(\my $out_str); 
    my $pod_str = do { local $/; <DATA> }; 
    $parser->parse_string_document($pod_str); 
    print $out_str; 
}  
__DATA__ 

=head1 SYNOPSIS 

prog [OPTIONS] 

=head1 OPTIONS 

=over 4 

=item --help 

Print this summary. 

=item B<--test>=I<value> 

Testing C<Pod::Text::Termcap> 

=back 

=head1 DESCRIPTION 

A test program 

運行prog.pl --help的輸出是:

enter image description here

注意,文本"value"直接使用Pod::Text::Termcap時有下劃線,但是從pod2usage()間接打印時不加下劃線。

注意:我使用的是Ubuntu 15.10。這對Ubuntu 14.10來說工作得很好,所以我期待升級Perl模塊時引入了這個問題。

回答

0

傳統上(即20世紀90年代以前)的終端不能做斜體字。大多數nroff/man/etc ...工具流程都沒有設置來處理它。另外,你自己的終端可能無法應付自己。

您可以通過嘗試

$ echo -e "\e[3mitalics?\e[m" 

,如果結果爲斜體出來看到測試終端本身。如果沒有,那麼你的終端肯定無法做到。

+0

是的同意,我也認爲這是'Pod :: Text :: Termcap'加下劃線文字的原因嗎?順便說一句。我使用的是gnome-terminal,它可以做斜體。但我認爲我對這個功能不感興趣(我只是希望下劃線文字) –