use*_*922 4 arrays perl hash merge elements
我有2个哈希.
my %hash1 = (
'1.3.6.1.2.1.7.1.0' => 'switch_stuff1',
'1.3.6.1.2.1.6.3.0' => 'switch_stuff4',
'1.3.6.1.2.1.6.5.0' => 'switch_stuff5',
'1.3.6.1.2.1.7.4.0' => 'switch_stuff2',
'1.3.6.1.2.1.6.2.0' => 'switch_stuff3'
);
my %hash2 = (
'1.3.6.1.2.1.7.1.0' => 125858,
'1.3.6.1.2.1.6.3.0' => 120000,
'1.3.6.1.2.1.6.5.0' => 23766,
'1.3.6.1.2.1.7.4.0' => 115336,
'1.3.6.1.2.1.6.2.0' => 200
);
Run Code Online (Sandbox Code Playgroud)
如您所见,两个哈希的键值是相同的.
我需要做的就是把值从%hash1并将其用作键的%hash2.
输出:
$VAR1 = {
'switch_stuff1' => 125858,
'switch_stuff4' => 120000,
'switch_stuff5' => 23766,
'switch_stuff2' => 115336,
'switch_stuff3' => 200
};
Run Code Online (Sandbox Code Playgroud)
注意:两个哈希中的键/值对的数量始终相同.
或者,对我来说唯一重要的%hash1是价值观.
'switch_stuff1',
'switch_stuff4',
'switch_stuff5',
'switch_stuff2',
'switch_stuff3'
Run Code Online (Sandbox Code Playgroud)
因此,如果以我描述的方式合并哈希是不可能的,我可以将其%hash1转换为仅包含值的数组.
任何人都可以帮助一个Perl新手,或者至少指出我正确的方向吗?任何帮助将不胜感激.
谢谢.
TLP*_*TLP 10
ETA:
啊,我想我误会了你..你想把两个单独的值加入哈希.轻松完成map:
my %hash3 = map { $hash1{$_} => $hash2{$_} } keys %hash1;
Run Code Online (Sandbox Code Playgroud)
my $hash1 = {
'1.3.6.1.2.1.7.1.0' => 'switch_stuff1',
'1.3.6.1.2.1.6.3.0' => 'switch_stuff4',
'1.3.6.1.2.1.6.5.0' => 'switch_stuff5',
'1.3.6.1.2.1.7.4.0' => 'switch_stuff2',
'1.3.6.1.2.1.6.2.0' => 'switch_stuff3'
};
my $hash2 = {
'1.3.6.1.2.1.7.1.0' => 125858,
'1.3.6.1.2.1.6.3.0' => 120000,
'1.3.6.1.2.1.6.5.0' => 23766,
'1.3.6.1.2.1.7.4.0' => 115336,
'1.3.6.1.2.1.6.2.0' => 200
};
my $hash3 = {}:
foreach $key (keys %$hash1) {
$hash3->{$hash1->{$key}} = $hash2->{$key};
}
Run Code Online (Sandbox Code Playgroud)