入力コマンドの実行が次のような場合、Getopt::Longメソッドを使用するにはどうすればよいですか。
$ testcmd -option check ARG1 ARG2 ARG3
また
$ testcmd ARG1 ARG2 ARG3
入力コマンドの実行が次のような場合、Getopt::Longメソッドを使用するにはどうすればよいですか。
$ testcmd -option check ARG1 ARG2 ARG3
また
$ testcmd ARG1 ARG2 ARG3
オプションを有効にする必要がありpass_through
ます。以下に引用するドキュメント:
pass_through
(デフォルト: 無効)不明なオプション、あいまいなオプション、または無効なオプション値が指定されたオプションは、エラーとしてフラグが立てられる代わりに @ARGV で渡されます。これにより、ユーザーが指定したコマンド ライン引数の一部のみを処理するラッパー スクリプトを記述し、残りのオプションを他のプログラムに渡すことができます。
が有効な場合
require_order
、オプションの処理は、最初に認識されないオプションまたは非オプションのいずれか早い方で終了します。ただし、permute
代わりに を有効にすると、結果が混乱する可能性があります。
DVKは、別の回答でこれを行う方法の例を投稿しました。あなたがそれが役に立つと思うなら、私は最初に彼の答えを支持します。
簡単な例:
#! /usr/bin/perl
use warnings;
use strict;
use Getopt::Long;
sub usage { "Usage: $0 [--option=VALUE] ARG1 ARG2 ARG3\n" }
my $option = "default";
GetOptions("option=s", \$option)
or die usage;
die usage unless @ARGV == 3;
print "$0: option=$option: @ARGV\n";
Getopt::Long
受け入れるものは非常に柔軟です。
$ ./cmd 使用法: ./cmd [--option=VALUE] ARG1 ARG2 ARG3 $ ./cmd 1 2 3 ./cmd: オプション = デフォルト: 1 2 3 $ ./cmd --option=foo 4 5 6 ./cmd: オプション=foo: 4 5 6 $ ./cmd -option=bar 7 8 9 ./cmd: オプション=バー: 7 8 9 $ ./cmd -option check abc ./cmd: オプション=チェック: abc
#!/usr/bin/perl
use Getopt::Long;
my $cla = GetOptions ( "one=s" => \$one,
"two=s" => \$two,
"three=s" => \$three,
"help|h|?" => \$help,
) or usage ();
if ($help) {
usage ();
}
my $first = $one;
my $second = $two;
my $third = $three;
printf ("%-7s %-9s %-7s\n", $first, $second, $third);
sub usage {
print "\n$0\t" . "[ -one <text> -two <text> -three <text> ]\n\n";
exit (0);
}