Perl 向脚本添加帮助命令

Perl 向脚本添加帮助命令,perl,documentation,command-line-arguments,getopt-long,perl-pod,Perl,Documentation,Command Line Arguments,Getopt Long,Perl Pod,是否有向脚本添加帮助功能的标准方法?最简单的方法可能是接受一个论点,如果是“-help”之类的话,打印一些文本。有没有人举过这样的例子 谢谢 我这样做的方法是利用命令行参数查找-h标志 use strict; use warnings; use Getopt::Std; my %args; getopts('h', \%args); my $help = "help goes here. You can use more than one line to format the text";

是否有向脚本添加帮助功能的标准方法?最简单的方法可能是接受一个论点,如果是“-help”之类的话,打印一些文本。有没有人举过这样的例子


谢谢

我这样做的方法是利用命令行参数查找
-h
标志

use strict;
use warnings;
use Getopt::Std;

my %args;
getopts('h', \%args);

my $help = "help goes here. You can use
more than one line to format the text";

die $help if $args{h};
# otherwise continue with script...
一个更复杂的方法是使用,尽管我个人没有尝试过这种方法。

考虑一下plus。我编写CLI工具的常用模式:

#!/usr/bin/env perl
# ABSTRACT: Short tool description
# PODNAME: toolname
use autodie;
use strict;
use utf8;
use warnings qw(all);

use Getopt::Long;
use Pod::Usage;

# VERSION

=head1 SYNOPSIS

    toolname [options] files

=head1 DESCRIPTION

...

=cut

GetOptions(
    q(help)             => \my $help,
    q(verbose)          => \my $verbose,
) or pod2usage(q(-verbose) => 1);
pod2usage(q(-verbose) => 1) if $help;

# Actual code below
看一看。我使用一种技术来组合
Getopt::Long
模块和
Pod::Usage
模块

主动作发生在第97行至第106行和第108行至第110行

Getopt::Long
是一个非常常用的模块,因为它可以轻松地处理命令行参数。使用Pod文档更为罕见。但是,所有CPAN模块和所有Perl内置模块都使用Pod文档,因此,如果您不知道的话。POD并不难学,它内置于Perl中,因此所有Perl程序都可以自文档化。您可以使用
perldoc
命令打印任何程序的POD文档。试试这个:

$ perldoc File::Find
您还可以使用
pod2html
pod2text
和其他类型的翻译命令将POD文档打印成HTML等

在我了解POD之前,我会在我的程序顶部放一些类似的东西:

########################################################
# USAGE
#
my $USAGE =<<USAGE;

     Usage:

         foo [ -baz -fu <bar>] [-help]

         where:

             baz: yadda, yadda, yadda
             fu:  yadda, yadda, yadda
           help:  Prints out this helpful message

USAGE
#
######################################################
这样,有人可以查看代码并阅读用法文本。这也将是使用
-help
参数时打印的相同文本。

易于使用:

if( $ARGV[0] eq '-h' || $ARGV[0] eq '-help')
{
help();
exit;
}


sub help { print "My help blah blah blah\n";
}
if( $ARGV[0] eq '-h' || $ARGV[0] eq '-help')
{
help();
exit;
}


sub help { print "My help blah blah blah\n";
}