2011-07-19 84 views
4

是否有一種簡單的方法來檢測Perl模塊Getopt :: Long的模糊選項?使用Getopt :: Long檢測模糊選項

例如:

#!/usr/bin/env perl 

# test ambiguous options 

use Getopt::Long; 

my $hostname = 'localhost'; 

GetOptions(help   => sub { print "call usage sub here\n"; exit }, 
      'hostname=s' => \$hostname, 
     ); 

print "hostname == '$hostname'\n"; 

默認的Getopt ::龍支持唯一的縮寫。對於非唯一的縮寫,會引發警告,並且腳本繼續其快樂方式。

./t.pl -h not_localhost 

Option h is ambiguous (help, hostname) 
hostname == 'localhost' 

我想我的腳本立即死於立即通知的模糊選項,並防止它以意外的默認值運行。

回答

7

GetOptions returns false表示失敗。

嘗試:

GetOptions(help   => sub { print "call usage sub here\n"; exit }, 
      'hostname=s' => \$hostname, 
     ) 
    or die "You failed"; 

考慮善待你的用戶和使用Pod::Usage。我自己的腳本通常是這樣的:

use warnings; 
use strict; 
use Getopt::Long; 
use Pod::Usage; 
GetOptions(...) 
    or pod2usage(2); 

[actual code] 

__END__ 
=head1 NAME 
myscript.pl - My Awesome Script 
=head1 SYNOPSYS 
[etc.] 
+1

Thanks!雖然我覺得無法檢查返回值是非常愚蠢的,但我非常感謝您的快速響應和Pod建議。 – vlee

相關問題