私があなたを完全に正しく理解しているかどうかはわかりません。
「私の配列」と表現するものは、%eventインデックスではなく名前を使用しているため、ハッシュのように見えます。そこで、次のように仮定しましょう。
イベントがあり、各イベントはハッシュ%eventであり、次のように定義されています。
my %event;
$event{date} = $my_date;
$event{machine} = $my_machine;
単純なハッシュ キーでは引用符を省略できることに注意してください。などのようにいくつかのイベントを定義した場合は%event1、%event2それらを配列に追加します。これらのイベント ハッシュへの参照を追加する必要があります。
my @events = ( \%event1, \%event2 );
これで、ユーザー ハッシュ イベントを次のように定義する必要があります。
$user{$name}{events} = [ @events ];
ここでも、ユーザーのイベントを配列への参照に設定する必要があります。内容は、イベント リストに含まれるものになります。これは基本的に要素を@eventsユーザーオブジェクトにコピーします。次のように書くこともできます
$user{$name}{events} = \@events;
@eventsただし、配列を直接参照しています。
これで、ループは非常に簡単になりました。
foreach my $name (@names) {
foreach my $event (@{$user{$name}{events}}) {
# do something with $event
}
}
@{ ... }でイベントの単純なリストを取得するために、イベント配列を逆参照しています$event。