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