2012-07-01 51 views
1

我寫了一個腳本,需要從用戶那裏得到幾個參數。 嘗試讀取我的腳本參數時遇到問題。Getopt ::長缺失參數

腳本可以將-type用於運行一種文件類型的函數,或者可以獲取標誌-all以便監聽所有文件類型。

my $opt = GetOptions (
    'help|h' => \$help, 
    'type=s' => \$type, 
    'all' => \$all, 
); 

我想考慮一下用戶可以運行,發現用戶 運行myscript.pl -type -all當模塊讀取-all-type字符串的所有錯誤的選項。

有沒有優雅的方式來避免這種事情?

謝謝!

-Yair

+0

另請參閱:http://www.perlmonks.org/?node_id=1110506 – toolic

回答

3

允許任何-type-all,但不能同時使用。或者,刪除-all選項,如果-type後跟all,請將其視爲您正在嘗試對待-all

my $opt = GetOptions (
    'help|h' => \$help, 
    'type=s' => \$type, 
    'all' => sub { $type = "all"; }, 
); 
+0

這正是我所做的。如果在GetOpt :: Long內部有內置解決方案來解決這些問題,我只想要。 – user1494264

+0

@ user1494264不是。無論如何,用'-all'指定'-type'的邏輯是什麼? – robert

+0

@ user1494264,「內置」解決方案(如果回調不是內置的)將如何更簡潔? – ikegami

2

使用'type:s'而不是'type=s'和型的值將是可選的。優雅?我不知道,但它很好。