6

スクリプトにヘルプ機能を追加する標準的な方法はありますか? 最も簡単な方法は、引数を取り、「-help」などのテキストを出力することです。これを行う方法の例はありますか?

ありがとう!

4

4 に答える 4

13

Getopt::LongPod::Usageを検討してください。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
于 2012-12-10T11:41:36.527 に答える
4

これを使いやすい:

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


sub help { print "My help blah blah blah\n";
}
于 2014-06-18T06:45:25.960 に答える
2

https://github.com/qazwart/SVN-Watcher-Hook/blob/master/svn-watch.plをご覧ください。Getopt::Longモジュールとモジュールを結合する手法を使用しPod::Usageます。

主なアクションは、97 行目から 106 行目と 108 行目から 110 行目で発生します。

これGetopt::Longは、コマンド ライン引数を簡単に処理するため、非常に一般的に使用されるモジュールです。Pod のドキュメントを使用することはまれです。ただし、すべての CPAN モジュールとすべての Perl 組み込みモジュールは Pod ドキュメントを使用しているため、知らない場合は学習してください。POD の習得はそれほど難しくなく、Perl に組み込まれているため、すべての Perl プログラムを自己文書化できます。コマンドを使用して、任意のプログラムの POD ドキュメントを印刷できますperldoc。これを試して:

$ perldoc File::Find

やその他の種類の変換コマンドを使用してpod2html、 POD ドキュメントを HTML などに出力することもできます。pod2text

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
#
######################################################

次に、私のプログラムでこれを行うことができます:

if ($help) {
    print "$USAGE\n";
    exit 0;
}

このようにして、誰かがコードを見て、使用法のテキストを読むことができます。これは、パラメーターを使用したときに出力されるテキストと同じになり-helpます。

于 2012-12-10T13:04:35.843 に答える
1

これを行う方法は、コマンドライン引数からフラグGetopt::Stdを見つけるために利用することです。-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...

POD::usage私は個人的にこの方法を試していませんが、より洗練されたアプローチはを使用することです。

于 2012-12-10T11:40:13.523 に答える