2009-05-28 5 views
4

これは私が、コマンドライン引数の取り扱いをテストするために書かれている簡単なスクリプトです:PerlのGetOpt :: Longは、略語を受け入れてバグに切り替えるのですか?

use Getopt::Long; 

my $help = 0; 

GetOptions(
'help|h|?' => \$help, 
) or die "Error!"; 

print "OK\n"; 

私が得た結果は次のとおりです。

D:\>perl test.pl --help 
OK 

D:\>perl test.pl --hell 
Unknown option: hell 
Error! at test.pl line 10. 

D:\>perl test.pl --he 
OK 

D:\>perl test.pl --hel 
OK 

は、誰もがこの前に気づいていますか?行動(彼と助けの代わりにヘルを受け入れる)は潜在的なバグですか?

答えて

8

いいえ、それは意図的だhere文書化機能です。これはオプションの最も曖昧でないバージョンを受け入れます。したがって、別のオプション "--hex"があれば "--he"を受け入れませんが、 "--hel"を受け入れます。

+0

ありがとうございます。 – Andy

13

はそれが

+0

ありがとうございます。これは速かった。 – Andy

+1

あなたは答えを「受け入れた」とマークする必要があります。 –

8

これはfeatureです。結果があいまいでない限り、オプションを省略することができます。この動作を望まない場合は、configurationで無効にすることができます。

これがバグだった場合は、それが既知のものかどうかを確認する場所はbug queueで、rt.cpan.orgです。

関連する問題