私はソースと宛先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のどのオブジェクトに保存させることができますか?
あなたは**スカラ、**値は**配列であるハッシュをする必要はないでしょう**。あるいは、値を置き換えるのではなく、その値で指定されたIPをコンマやセミコロンなどの選択した文字で区切って、値を置き換えるのではなく、追加することもできます。 – AntonH
データ構造の設計は、データの構造を想像するのではなく、あなたが求めている質問*に関するものです。これらの送信元アドレスと送信先アドレスは、常に区別されているのか、またはほとんど対称な関係になっていますか? (宛先もソースとすることはできますか?)任意のアドレスについて知りたい情報はありますか?たとえば、発信接続の数、発信元か宛先かなど、指定された発信元と宛先のペアが一定期間内に何回接続されたかなど。 – Borodin
実際には1:N(各キーには多数の値があります) )であり、N:Nではない。したがって、配列のハッシュが行います。 – ikegami