我想在我的Perl腳本中使用Getopt::Std從命令行收集值。如何使用Getopt :: Std設置默認值?
use Getopt::Std;
$Getopt::Std::STANDARD_HELP_VERSION = 1;
getopts('i:o:p:');
my $inputfile = our $opt_i;
my $outputfile = our $opt_o;
my $parameter_value = our $opt_p;
在這裏,前兩個變量($ inputfile中,$ OUTPUTFILE)是強制性的,但最後一個變量($ PARAMETER_VALUE)是可選的,可以忽略不計。
我想在命令行忽略-p
標誌時,默認情況下將一些值設置爲最後一個變量($ parameter_value)。
我試圖使用這樣的:
my $parameter_value = our $opt_p || "20";
在這裏它的通行證時-p標誌在命令行無視正確的值。但問題是,當我從命令行提供一些值(例如-p 58)時,將相同的值20傳遞給程序,而不是從命令行傳遞給58的值。
你能幫我指出我在這裏犯的錯誤嗎?
謝謝。
好的:) = +1 – DVK 2009-10-22 18:34:00
thanx思南,這工作非常好,並保留我的編碼格式。感謝一噸。 – Suren 2009-10-22 18:38:15
如果您使用5.10+,最好使用'//'而不是'||',因爲後者測試的是真實性,沒有定義。它會阻止你能夠傳入錯誤的值(例如0)。在5.10之前獲得等同行爲的冗長方法是'$ x = defined $ y? $ y:Z'其中'Z'是默認值。 – 2009-10-22 23:38:48