我的哈希值如下所示:
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;
}
}
现在,我对如何在哈希和数组中同时插入哈希感到困惑。请问是否有人可以提出建议。谢谢。
答案 0 :(得分:1)
可以毫无问题地构建分支:
$list->{$version}{branch} = $branch;
对于产品,您应该将它们推送到您必须取消引用的阵列上:
push @{ $list->{$version}{products} },
{ product => $product,
prodType => $prodtype,
};
在最近的Perl版本中,不需要取消引用,因此您可以直接推送到数组引用。