我有我需要解析具有源和目標IP地址的日誌。 我想通過日誌遍歷源IP和目標IP作爲一對值。如何在PERL中編寫多對多的關係?
我試過一個散列,它沒有工作。這是問題的一個例子:
%sessionIPs =();
$sessionIPs{"1.1.1.1"} = "2.2.2.2";
$sessionIPs{"1.1.1.2"} = "3.3.3.3";
$sessionIPs{"1.1.1.3"} = "4.4.4.4";
$sessionIPs{"1.1.1.1"} = "5.5.5.5";
$sessionIPs{"3.3.3.3"} = "6.6.6.6";
foreach my $key (keys %sessionIPs)
{
print "key: $key, value: $sessionIPs{$key}\n";
}
#prints
key: 1.1.1.3, value: 4.4.4.4
key: 1.1.1.2, value: 3.3.3.3
key: 1.1.1.1, value: 5.5.5.5
key: 3.3.3.3, value: 6.6.6.6
正如你所知道的,我失去了1.1.1.1源IP和2.2.2.2目的地IP鍵/值對,因爲哈希需要一個獨特的密鑰。我需要一個不禁止重複鍵的散列或其他類型的對象。
perl中的對象允許我存儲這種相關數據?
其中值是一個**陣列您需要散列**,而不是標量** **。或者,您可以附加值,而不是替換它,將值分隔爲您選擇的字符(如逗號或分號)。 – AntonH
數據結構設計更多地關於您想要問什麼問題,而不是您想象數據結構的方式。這些源地址和目標地址總是不同的,或者這種關係大都是對稱的? (目的地是否也可以作爲信息來源?)您想知道哪些給定地址的信息?例如,外出連接的計數,地址是源還是目的地,給定的源 - 目的地對在給定的時間段內連接了多少次等等。 – Borodin
你想要的實際上是1:N(每個鍵具有許多值),而不是N:N。因此,數組的哈希將做。 – ikegami