perl Pod::用法帮助格式化

osh3o9ms  于 2022-11-15  发布在  Perl
关注(0)|答案(2)|浏览(132)

我想为Perl脚本正确地设置帮助信息的格式,如果可能的话,使用标准模块,比如Pod::Usage。不幸的是,我不太喜欢pod2usage的输出格式。例如,使用grep时,我得到了如下的帮助结构:

$ grep --help
Usage: grep [OPTION]... PATTERN [FILE]...
Search for PATTERN in each FILE or standard input.
PATTERN is, by default, a basic regular expression (BRE).
Example: grep -i 'hello world' menu.h main.c

Regexp selection and interpretation:
  -E, --extended-regexp     PATTERN is an extended regular expression (ERE)
  -F, --fixed-strings       PATTERN is a set of newline-separated fixed strings
  -G, --basic-regexp        PATTERN is a basic regular expression (BRE)
  -P, --perl-regexp         PATTERN is a Perl regular expression

但是,Pod::Usage的情况非常不同,我得到了不需要的\n\t

$ ./sample.pl --help
Usage:
    sample [options] [file ...]

    This program will read the given input file(s) and do something useful
    with the contents thereof.

Options:
    --help
        Print a brief help message and exits.

    --man
        Prints the manual page and exits.

我想以传统的方式修改帮助的格式,即不使用\n,也不使用前导\t。事实上,我正在寻找允许我编写以下内容的解决方案:

__END__

=head1 SYNOPSIS

sample [options] [file ...]

B<This program> will read the given input file(s) and do something
useful with the contents thereof.

=head1 OPTIONS

=item B<-h,--help>
    Print a brief help message and exits.

=item B<-v,--version>
    Prints the version and exits.

=cut

听好了

Usage: sample [options] [file ...]        
 This program will read the given input file(s) and do something useful
 with the contents thereof.

Options:
 -h,    --help     Print a brief help message and exits.
 -v,    --version  Prints the version and exits.

不是这个:

Usage:
    sample [options] [file ...]

    This program will read the given input file(s) and do something useful
    with the contents thereof.

Options:
    -h,--help Print a brief help message and exits.
    -v,--version Prints the version and exits.

有线索吗?

mf98qq94

mf98qq941#

当你使用=item时,你应该在它前面加上一个=over x,其中x是你想移动的距离。当你完成你的项目后,你需要使用=back。如果=over x足够远,该项目的段落将与=item打印在同一行。我试了一下,发现=over 20看起来很不错:

use strict;
use warnings;

use Pod::Usage;

pod2usage( -verbose => 1);

=pod

=head1 SYNOPSIS

    sample [options] [file ...]

B<This program> will read the given input file(s) and do something
useful with the contents thereof.

=head1 OPTIONS

=over 20

=item B<-h>, B<--help>

Print a brief help message and exits.

=item B<-v>, B<--version>

Prints the version and exits.

=back 

=cut

这将打印出:

Usage:
        sample [options] [file ...]

    This program will read the given input file(s) and do something useful
    with the contents thereof.

Options:
    -h, --help          Print a brief help message and exits.

    -v, --version       Prints the version and exits.

POD中的v, --version内容并不能让它以漂亮的三列格式打印。您可以做的是在-h--help之间给予更多的空间,就像我上面所做的那样,以提高可读性。
记住,重要的是POD中的数据,而不是绝对的格式。使用格式使其易于阅读,但不要对细节太在意。
我强烈建议您使用旧的标准手册页布局(Pod2Usage假定)。

hgtggwj0

hgtggwj02#

您可以尝试以下两种方法:
-noperldoc选项使其切换到Pod::Text,这是一个更简单的格式化程序。

设置其他格式化程序
Pod::Text也有几个格式选项,如左边距,缩进级别,页宽,这可能会使它更符合您的喜好。

相关问题