Perl podusage gera man page com extra-controle

1

Estou usando pod2usage em um script Perl para gerar uma página man. O código é assim:

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>] ) 

Quando eu executo o programa, recebo a página man, mas é assim:

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] )

Acima, as palavras estão em negrito e sublinhadas, mas esses ^O estão seguindo-as. Por que eles estão aí?

Observe que, se eu fizer uma página de manual simples (por exemplo, man man ), as palavras com negrito ou sublinhado não terão ^O com sufixo.

Isso está acontecendo em uma máquina do Debian em um shell bash com a variável term definida como linux .

    
por rlandster 25.01.2018 / 19:16

1 resposta

1

Posso (surpreendentemente) reproduzir seu problema no OpenBSD com TERM definido como linux (ou rxvt ). Com TERM definido como vt100 , screen , tmux , xterm ou outros terminais comuns, não tenho problema e os caracteres ^O não aparecem.

A única informação relevante que consegui encontrar em relação às capacidades do terminal é que Pod::Text , que Pod::Usage usa, usado para usar termcap de sequências antes de ser reescrito. Com TERM=linux , parece não fazer nenhuma diferença se Pod::Usage estiver usando o Pod::Text padrão para formatação ou se for usado o Pod::Text::Termcap , conforme explicado na documentação Pod::Usage :

The default text formatter is Pod::Text. The base class for Pod::Usage can be defined by pre-setting $Pod::Usage::Formatter before loading Pod::Usage, e.g.:

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

Certifique-se de que a variável TERM esteja configurada corretamente para o terminal que você está usando. A maioria dos terminas funciona bem com xterm ou xterm-color , embora as sessões executadas em screen ou tmux devam ter TERM=screen (os dois programas aplicam isso por padrão).

    
por 04.02.2018 / 19:14