2009-05-28 71 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

不,這是故意的特徵。它接受選項中最短的不含歧義的版本,所以如果你有另一個選項「--hex」,它將不接受「--he」,但它會接受「--hel」。

13

據記載here

+0

謝謝。這很快。 – Andy 2009-05-28 14:29:59

+1

您應該將答案標記爲'接受'。 – 2009-05-28 16:41:50

8

這是一個feature。選項可以縮寫,只要結果不含糊。如果您不想要這種行爲,可以通過configuration將其禁用。

如果這是一個錯誤,檢查以確定它是否是已知的地方是bug queuert.cpan.org

相關問題