3
我想設置默認值,如果用戶不提供它映射數組哈希與邏輯定義運算符
以下是我的代碼。請指出如何將其與//運算符來完成
use Data::Dumper;
use Getopt::Long;
my @viewFiles = ("cdl", "lef", "verilog", "lib");
my %viewPaths;
my $pctDir = ".";
GetOptions(
"pctDir=s" => \$pctDir,
"cdl=s" => \$viewPaths{"cdl"},
"lef=s" => \$viewPaths{"lef"},
"verilog=s" => \$viewPaths{"verilog"},
"lib=s" => \$viewPaths{"lib"},
);
@viewPaths{@viewFiles} //= ("$pctDir/cdl/topCellName.cdl", "$pctDir/lef/topCellName.lef", "$pctDir/model/verilog/topCellName.v", "$pctDir/model/timing/lib/topCellName.lib");
print Dumper \%viewPaths;
輸出爲:
$VAR1 = {
'cdl' => undef,
'verilog' => undef,
'lib' => './model/timing/lib/topCellName.lib',
'lef' => undef
};
預期輸出:
$VAR1 = {
'cdl' => './cdl/topCellName.cdl',
'verilog' => './model/verilog/topCellName.v',
'lib' => './model/timing/lib/topCellName.lib',
'lef' => './lef/topCellName.lef'
};
我可能不得不與你的第一個候補。 實際上,來自用戶的變量'$ pctDir'存在依賴關係。 沒有使用循環的替代方法嗎 –
爲什麼你需要避免使用循環?你隱式地循環你所做的任何事情,因爲這是操作的本質。 – Sobrique
'pctDir'是一個變量(如果有人不清楚 - 原始文章將其作爲靜態文本),那麼是的,您可能需要使用第一個示例。否則,你最終會遇到一些令人討厭的使用'eval'。 – Sobrique