0

我有看起来像这样的哈希值:

   build -var ver=2.1.0.0 -var buildnum=WorkSet/2.1.0_suiteB_3o -var product=cisco6500 platform=NSA prodtype=Debug HOST=10.9.33.22 -var clist=

   build -var ver=2.1.0.0 -var buildnum=WorkSet/2.1.0_suiteB_3o -var product=juniper6700 platform=NSA prodtype=Prod HOST=10.9.33.22 -var clist=

我正在尝试分离散列值以创建另一个散列,如下所示:

   My $list = {'2.1.0.0' => { 'branch' => Workset/2.1.0'
               'products' => [{product => 'cisco6500',
                                prodType => 'Debug'},
                                {product => 'juniper6700',
                                prodType => 'Prod'}]

} }

我写了这样的东西:

    if ($cmd =~ m/ver=(\d.\d.\d.\d)/){
            $version = $1;
    }
    if ($cmd =~ m/buildnum=(\w+.\/\d.\d.\d)/){
            $branch = $1;
    }
    if ($cmd =~ m/product=(\s+)/){
            $product = $1;
    }

}

现在,我很困惑如何同时在散列和数组中插入散列。请如果有人可以提出一些建议。谢谢你。

4

1 回答 1

1

可以毫无问题地构建分支:

$list->{$version}{branch} = $branch;

对于产品,您应该将它们推送到您必须取消引用的数组上:

push @{ $list->{$version}{products} },
        { product  => $product,
          prodType => $prodtype,
        };

在最近的 Perl 版本中,不需要取消引用,因此您可以直接推送到数组引用。

于 2013-07-19T20:13:47.300 回答