私は同じキーと異なる値で2つのハッシュを持っています。具体的には、スイッチ上のMACアドレスとブリッジポートIDを回復する2つの異なるSNMPクエリーの結果です。両方のキーは同一で、クエリの各行の値とともに返されるSNMP文字列です。Perlでキーを使用して2つのハッシュに参加しますか?
I.e.ブリッジポートのハッシュが対応する必要があります一方
17.4.3.1.1.0.37.17.87.107.181/00 25 11 57 6B B5
:MACアドレスハッシュは、次のキー/値のペアを持つことになりますキー/値ペア:
17.4.3.1.1.0.37.17.87.107.181/56
これは、ハッシュ内のすべてのエントリにも当てはまります。
私は、各ハッシュから左側のsnmp文字列の値を引っ張って新しいハッシュ値に入れるのは簡単なことだと思っていました。ただし、以下のコード:
foreach $curSnmpId (@macKeys){
#Keys for macAddrHash and bridgePortHash are identical,
#so code below should pull corresponding entries out of
#each and put into macBridgeHash
my $curMacAddr = $macAddrHash{$curSnmpId};
my $curBridgeId = $bridgePortHash{$curSnmpId};
print "curSnmpId: $curSnmpId curMacAddr: $curMacAddr curBridgeId: $curBridgeId\n";
$macBridgeHash{$curBridgeId} = $curMacAddr;
}
は、次のような出力が得られます。
curSnmpId: 17.4.3.1.1.0.37.17.87.107.181 curMacAddr: 00 25 11 57 6B B5 curBridgeId: curSnmpId: 17.4.3.1.1.0.0.116.250.193.119 curMacAddr: 00 00 74 FA C1 77 curBridgeId: curSnmpId: 17.4.3.1.1.0.35.24.202.193.125 curMacAddr: 00 23 18 CA C1 7D curBridgeId:
私はすでにブリッジポートのハッシュがそれにデータを持っていることをチェックしました。 @macKeysの代わりにブリッジポートのハッシュからキーセットを使用すると、curBridgeIdは取得されますが、curMacAddrは取得されないことに気付きました。
両方のハッシュで$ curSnmpIdの値(17.4.3.1.1.0.37.17.87.107.181など)がキーとして存在する場合、なぜ私のコードは機能しませんか?私はグーグルでこれまでの間、頭を捜して、頭を叩いてしまいました。そして、本当に助けに感謝します。
よろしく、 すべての
あなたの出力は、キー '17.4.3.1.1.0.37.17.87.107.181'が両方のハッシュに存在しないことを示します。キーの1つにスペース、改行、またはNULLバイトが埋め込まれている可能性がありますか? デバッガを使用してステップ実行するか、 'Data :: Dumper'を使用して' \%macAddrHash'と '\%bridgePortHash'を調べてください。 – mob