在perl中

时间:2017-10-31 10:16:20

标签: perl hash

我的程序看起来像是用hash定义的: 其中$ varname和$ varValue是从文件动态传递的:以下是我的程序:

$appOptk= {
%hash{$varName}=>$varValue,                                                                         
                };
push @{$hash{metrics}->{appOptions}},$appOptk;


Output of the program looks like this:

"metrics": {
            "appOptions": [{
                    "shell.common.report_default_significant_digits                ": "4"
                }, {
                    "time.remove_clock_reconvergence_pessimism                     ": "true"
                "route.detail.hop_layers_to_fix_antenna ": "true "
            }, {
                "clock_opt.flow.optimize_layers                                ": "false"
            }, {
                "clock_opt.flow.skip_placement                                 ": "true"
                }
            ],

任何人都可以通过删除哈希中的括号来告诉如何获得低于输出

"metrics": {

            "appOptions": [{
        "shell.common.report_default_significant_digits             ": "4"
    "time.remove_clock_reconvergence_pessimism                    ": "true"
            "route.detail.hop_layers_to_fix_antenna ": "true "
        "clock_opt.flow.optimize_layers                           ": "false"
    "clock_opt.flow.skip_placement                                 ": "true"
            ],

2 个答案:

答案 0 :(得分:0)

您的预期输出对我没有任何意义,但您可以通过将push @{$hash{metrics}->{appOptions}},$appOptk;更改为

来实现
${@{$hash{metrics}->{appOptions}}[0]->{$varName}} = $varValue;

答案 1 :(得分:0)

如果所有内容都在Perl中,那么读起来会更容易。我想这就是你想要的。

$hash{metrics}{appOptions}[-1]{$varName} = $varValue;

当然,您必须决定何时将新数组添加到列表中。

# add new array
push @{$hash{metrics}{appOptions}}, {};