4

GetOptionsユーティリティを使用して、期待されるコマンドライン引数のみを処理する方法を説明する多くのPerlチュートリアルがあります。それ以外の場合は、適切なメッセージで終了します。

私の要件では、次のようなオプションのコマンドライン引数があります。

  • -z zip_dir_path:出力をzipします
  • -h:ヘルプを表示します。

GetOptionsとの組み合わせをいくつか試しましたが、うまくいきませんでした。
だから私の質問は:この要件を処理するためにGetOptionsを使用する方法は?

編集:-zには「zipディレクトリパス」が必要です

EDIT2:私のスクリプトには次の強制的なコマンドライン引数があります:

  • -input_dir_path内:入力ディレクトリ
  • -out output_dir_path:出力ディレクトリ

これが私のコードです:

my %args;
GetOptions(\%args,
"in=s",
"out=s"
) or die &usage();

die "Missing -in!" unless $args{in};
die "Missing -out!" unless $args{out};

この編集がより明確になることを願っています。

4

3 に答える 3

9

:コロン)は、オプションのオプションを示すために使用できます。

#!/usr/bin/env perl

use strict;
use warnings;

use Getopt::Long;

my ( $zip, $help, $input_dir, $output_dir );

GetOptions(
    'z:s'   => \$zip,
    'h'     => \$help,
    'in=s'  => \$input_dir,
    'out=s' => \$output_dir,
);
于 2011-07-02T07:49:00.823 に答える
4

ドキュメントから:

   : type [ desttype ]
       Like "=", but designates the argument as optional.  If omitted, an
       empty string will be assigned to string values options, and the
       value zero to numeric options.

これを指定して空の文字列を確認すると、ユーザーが指定しなかった文字列がわかります。

于 2011-07-02T14:45:36.847 に答える
2

これは、コマンドラインで取得する入力引数に設定する10、の値に$zip_output基づい$show_helpて設定する必要があります。

use strict;
use warnings;

use Getopt::Long;

my $zip_output;
my $show_help;

GetOptions("z" => \$zip, "h" => \$show_help);
于 2011-07-02T07:30:54.097 に答える