0

指定されたすべてのオプションと値をエコーする単純なスクリプトが必要です (そして、潜在的なオプションがどうなるかわかりません)。私はこのようなことを実験しました:

use Getopt::Long qw(GetOptionsFromArray);

my %options;

my @opt_spec = qw(a:s b:s c:s d:s e:s f:s g:s h:s i:s j:s k:s l:s m:s n:s o:s p:s r:s q:s r:s s:s t:s u:s v:s w:s x:s y:s z:s);

Getopt::Long::GetOptions(\%options, @opt_spec);

しかし、可能なすべてのオプションを指定する必要があります。オプションとして受け取るものを事前に知らなくても、すべてのキーと値のペアを取得する方法はありますか?

4

2 に答える 2

4

Getopt::Longキーと値のペアだけでなく、否定可能なオプション、複数のオプションまたはハッシュ値を持つオプション、インクリメント オプション、単一文字およびバンドルされたオプションをサポートします。正確なスキームを与えGetopt::Longないと、使用したいモジュールの正確な機能を推測できないため、このタスクのツールではないようです。

代わりに欲しいかもしれませんGetopt::Whatever

于 2012-06-29T19:10:34.293 に答える
2

スペックが必要です。スペックが無ければ分からない

-a=-b -c -d -e -f g --h -- -i -j

与えるべき

my %options = (
    'a' => '-b',
    'c' => '',
    'd' => '',
    'e' => '',
    'f' => 'g'
    'h' => '',
);
@ARGV = (
   '-i',
   '-j',
);

それ以外の

my %options = (
    'a' => '-b',
    'c' => '-d',
    'e' => '-f',
    'h' => '--',
    'i' => '-j'
);
@ARGV = (
    'g',
);

(後者a=sは 、b=sなどを使用)

GetOptionsすべての名前に仕様を与えるバージョンを作成することもできますが、:s1 文字の引数しかない限り、コードを使用して仕様を生成する方が簡単です。

my @opt_spec = map "$_:s", 'a'..'z';
于 2012-06-29T19:20:40.497 に答える