ハッシュの配列をあるカラムをキーにしてマージしたい


my %person1 = (
    user_id   => 1234,
    name      => 'test'
);
my %person2 = (
    user_id   => 5678,
    name      => 'hoge'
);
my %person3 = (
    user_id   => 9101,
    name      => 'fuga'
);
my %person4 = (
    user_id => 2345,
    name    => 'aaaa'
);
my @person_list = ();
push(@person_list, \%person1);
push(@person_list, \%person2);
push(@person_list, \%person3);
push(@person_list, \%person4);

my %users1 = (
    id   => 2345,
    note => 'abc',
);
my %users2 = (
    id   => 9101,
    note => 'def',
);
my @user_list = ();
push(@user_list, \%users1);
push(@user_list, \%users2);

my %id_list = map {$_->{id}, $_} @user_list;

my @found_list;
my @not_found_list;

foreach my $person (@person_list) {
    if ($id_list{$person->{user_id}}) {
        $person->{note} = $id_list{$person->{user_id}}->{note};
        push(@found_list, $person);
    } else {
        push(@not_found_list, $person);
    }
}

@person_list = [\@found_list, \@not_found_list];

use Data::Dumper;
print Dumper @person_list;


実行すると、

$VAR1 = [
          [
            {
              'name' => 'fuga',
              'user_id' => 9101,
              'note' => 'def'
            },
            {
              'name' => 'aaaa',
              'user_id' => 2345,
              'note' => 'abc'
            }
          ],
          [
            {
              'user_id' => 1234,
              'name' => 'test'
            },
            {
              'name' => 'hoge',
              'user_id' => 5678
            }
          ]
        ];

こうなる。idをキーにして、二つのハッシュがマージされた。

my %id_list = map {$_->{id}, $_} @user_list;

ここで、キーがid、値がハッシュのマップを作っている。
そうすると

foreach my $person (@person_list) {
    if ($id_list{$person->{user_id}}) {
        $person->{note} = $id_list{$person->{user_id}}->{note};
        push(@found_list, $person);
    } else {
        push(@not_found_list, $person);
    }
}

こんな風に、

$id_list{$person->{user_id}}->{note}

で、そのidのカラムを取得できるので、それをマージしたい対象のカラムにいれている。
結果として、さきほどの結果が得られる。カラムという言い方は、あっているのかな? まあソースがDBであればそうだけど、そのキーのバリュー、とでもいうべきなのか。
まあ文脈によるかもしれない。