我讀過的文檔爲GetOptions
,但我似乎無法找到我所需要的...(也許我是個盲人)如何使用GetOptions獲取默認參數?
我想要做的是分析這樣
myperlscript.pl -mode [sth] [inputfile]
命令行
我可以使用-mode
部分,但我不知道如何獲取[inputfile]。任何建議將被認真考慮。
我讀過的文檔爲GetOptions
,但我似乎無法找到我所需要的...(也許我是個盲人)如何使用GetOptions獲取默認參數?
我想要做的是分析這樣
myperlscript.pl -mode [sth] [inputfile]
命令行
我可以使用-mode
部分,但我不知道如何獲取[inputfile]。任何建議將被認真考慮。
對於此任務,您不使用GetOptions
。 GetOptions
將簡單地爲您解析選項,並將所有不在@ARGV
中的選項留下。因此,撥打GetOptions
之後,只需在@ARGV
處查看在命令行上傳遞的任何文件名即可。
不以-
開頭的命令行參數仍然在@ARGV
,不是嗎?
任何不由GetOptions處理的東西都留在@ARGV
。所以,你可能會想是
use Getopt::Long;
my %opt
my $inputfile = 'default';
GetOptions(\%opt, 'mode=s');
$inputfile = $ARGV[0] if defined $ARGV[0];
GetOptions
會離開它沒有任何分析論證,在@ARGV
變量。所以你可以循環使用@ARGV
變量。
use Getopt::Long;
my %opt;
GetOptions(
\%opt,
'mode=s'
);
for my $filename (@ARGV){
parse($filename, \%opt);
}
還有另一種選擇,可以使用特殊的<>
參數回調選項。
use Getopt::Long qw'permute';
our %opt;
GetOptions(
\%opt,
'mode=s',
'<>' => sub{
my($filename) = @_;
parse($filename, \%opt);
}
);
,如果你希望能夠對多個文件的工作,但使用一些不同的選擇,這非常有用。
perl test.pl -mode s file1 file2 -mode t file3
這個例子將設置$opt{mode}
到s
,那麼它將調用parse
與file1
作爲參數。然後它將以file2
作爲參數調用parse
。然後它會將$opt{mode}
更改爲t
,並以file3
作爲參數調用parse
。