讓我得到這個直:
- 您運行一個Perl腳本。
- Perl腳本爲命令行腳本獲取或創建一堆選項。
- 然後,您使用這些選項來運行可執行文件。
我會把你的選項放到一個Perl散列中,讓它通過命令行參數鍵入,並且該值將是該命令行參數的值。
my %parameters;
$parameters{"-a"} = "foo";
$parameters{"-b"} = "bar";
$parameters{"-c"} = "";
現在,讓我們構建要執行的命令。我將通過keys命令解析數組。這將返回所有鑰匙,可%parameters
散在我的循環:
my $command = "cmd";
for my $param (sort keys %parameters) {
if ($parameters{ $param }) {
$command .= " $param $parameters{$param}";
}
}
注意,如果$parameters{ $param } is blank or zero, it will not add that parameter/value pair to the command line you're executing. Now, we can execute the command. Use
system`如果你不需要任何值在命令後面。然後檢查,以確保執行工作:
my $error = system "$command";
if ($error) {
die qq(Error detected in running command "$command");
}
如果有可能的參數爲空,有空格,或零個值,我們必須採取一個稍微不同的機智:
my %parameters;
$parameters{"-a"} = "foo";
$parameters{"-b"} = "bar";
$parameters{"-c"} = undef;
my $command = "cmd";
for my $param (sort keys %parameters) {
if (defined $parameters{ $param }) {
$command .= qw/ $param "$parameters{$param}"/;
}
}
my $error = system "$command";
if ($error) {
die qq(Error detected in running command "$command");
}
爲什麼不使用'Getopt :: Std'模塊? –
參數不是通過命令行直接發送到perl腳本,而是一個文本文件包含所有參數。這不是我的代碼,我需要在它上面添加這個特性,因爲我們將使用可選參數。 – gravitas